На форуме обсидиана это не обсуждают, нашёл только https://forum.obsidian.md/t/graph-nodes-different-to-text-colour/14046/4
А можно сценарий использования? Может заменить чем-то
Мысли Claude интересные:
Использование групп и фильтров:
Хотя нельзя изменить цвет отдельных ссылок, можно создать группы заметок и назначить им разные цвета. Это делается через настройки графа (Graph Settings) в разделе "Groups". Вы можете создать группы на основе тегов, папок или поисковых запросов.
Плагины сообщества:
Существуют плагины сообщества, которые расширяют возможности графа. Например, "Obsidian Graph Analysis" предоставляет дополнительные опции для анализа и визуализации графа, хотя и не позволяет напрямую менять цвета отдельных ссылок.
Разработка собственного плагина:
Вы уже пробовали этот подход, и столкнулись с проблемой отсутствия уникальных идентификаторов для ссылок. Это действительно усложняет задачу. Однако, есть несколько возможных направлений:
a. Использование метаданных заметок: Вы могли бы добавить в frontmatter заметок специальное поле для цвета и использовать его при рендеринге графа.
b. Анализ содержимого заметок: Плагин мог бы анализировать содержимое заметок и на основе определённых критериев (например, наличие определённых ключевых слов) назначать цвета ссылкам.
c. Модификация объекта графа: Хотя у ссылок нет прямых ID, возможно, вы сможете модифицировать объект графа, добавив дополнительные свойства к узлам или рёбрам.
Использование внешних инструментов:
Если функциональности Obsidian недостаточно, вы могли бы экспортировать данные вашего хранилища и использовать специализированные инструменты для визуализации графов, такие как Gephi или Cytoscape, которые предоставляют более гибкие возможности настройки.
Обратная связь с разработчиками:
Можно обратиться к разработчикам Obsidian с предложением добавить функцию изменения цвета отдельных ссылок. Если многие пользователи заинтересованы в этой функции, есть шанс, что она будет реализована в будущих версиях.
///
///
///
Попытка спросить техническую реализацию:
Анализ и модификация объекта графа:
import { Plugin, TFile } from 'obsidian';
export default class GraphColorPlugin extends Plugin {
async onload() {
this.registerEvent(
this.app.workspace.on('graph:will-render', (graph) => {
this.customizeGraphColors(graph);
})
);
}
customizeGraphColors(graph: any) {
const nodes = graph.nodes;
const edges = graph.edges;
nodes.forEach((node: any) => {
const file = this.app.vault.getAbstractFileByPath(node.id);
if (file instanceof TFile) {
const color = this.getColorForFile(file);
if (color) {
node.color = color;
}
}
});
edges.forEach((edge: any) => {
const sourceFile = this.app.vault.getAbstractFileByPath(edge.source);
const targetFile = this.app.vault.getAbstractFileByPath(edge.target);
if (sourceFile instanceof TFile && targetFile instanceof TFile) {
const color = this.getColorForLink(sourceFile, targetFile);
if (color) {
edge.color = color;
}
}
});
}
getColorForFile(file: TFile): string | null {
// Implement logic to determine color based on file properties
// For example, based on tags, frontmatter, or content
return null;
}
getColorForLink(sourceFile: TFile, targetFile: TFile): string | null {
// Implement logic to determine color based on link properties
// For example, based on the relationship between files
return null;
}
}
Комменты далее
Есть ли способ это сделать? Пробовал написать плагин, но как оказалось у ссылок нет ID для присвоения цвета, так как ссылки динамические.