нижние индексы и греческие буквы в метках с точками

Это продолжение Использование символьного шрифта/математической нотации в графическом представлении, а также был размещен на дискуссионном форуме Graphviz, http://www.graphviz.org/content/subscripts-greek-letters-dot-edge-labels, но ответа не последовало.

[Окружающая среда: графвиз 2.38, Windows 7]

Я работаю над проектом по созданию схем путей для моделей структурных уравнений в R с Пакет sem Пакет sem содержит функцию pathDiagram, которая делает это довольно хорошо, создавая требуемый код для точки.

Мы используем два внутренних рендерера: сам dot с параметром -Tpdf и пакет R DiagrammeR. , который использует библиотеки javascript grViz и mermaid.

Недавно мы добавили код, позволяющий отображать метки ребер с использованием греческих букв и нижних индексов, используя эквиваленты символов UTF-8, например

"beta" "β" "β"
"gamma" "γ" "γ"

и

subscripts <- c("₀", "₁", "₂", "₃", "₄", "₅", "₆",
"₇", "₈", "₉")

Мы обнаружили, что это прекрасно работает с DiagrammeR. С точкой мы действительно получаем греческие буквы, но ничто из того, что мы пробовали, не позволяет нам получать индексы из стандартной команды dot -T pdf -o файл.pdf файл.точка Все, что мы получаем, это эти маленькие квадратики с 4-значным кодом.

Это баг или ограничение точки? Есть ли обходной путь?

Вот пример точечного файла, созданного нашим программным обеспечением, который иллюстрирует это поведение.

digraph "union.sem" {
  rankdir=LR;
  size="8,8";
  node [fontname="Helvetica" fontsize=14 fillcolor="transparent" shape=box style=filled];
  edge [fontname="Helvetica" fontsize=10];
  center=1;
  {rank=min "x1"}
   {rank=min "x2"}
  "y1" [fillcolor="transparent"]
  "y2" [fillcolor="transparent"]
  "y3" [fillcolor="transparent"]
  "x2" -> "y1" [label="&#947;&#770;&2081;&2082;=-0.09" color=red penwidth=1.001];
  "y1" -> "y2" [label="&#946;&#8322;&#8321;=-0.28" color=red penwidth=1.001];
  "x2" -> "y2" [label="&#947;&#8322;&#8322;=0.06" color=black penwidth=1.001];
  "y1" -> "y3" [label="&#946;&#8323;&#8321;=-0.22" color=red penwidth=1.001];
  "y2" -> "y3" [label="&#946;&#8323;&#8321;=0.85" color=black penwidth=1.001];
  "x1" -> "y3" [label="&#947;&#8323;&#8321;=0.86" color=black penwidth=1.001];
  "x1" -> "x2" [label="&#963;&#8321;&#8322;=7.14" dir=both color=black penwidth=1.001];
  // variable labels: 
    "y1" [label="Deference"];
    "y2" [label="Activism"];
    "y3" [label="Sentiment"];
    "x1" [label="Years"];
    "x2" [label="Age"];
}

И результат (используя -Tpng)

введите здесь описание изображения

(В этом примере я также попытался использовать символы Unicode для индексов в пути x2 -> y1, взятых из Как найти Unicode нижнего индекса алфавита?, но они просто отображаются как их &2081; строки.)


person user101089    schedule 28.05.2015    source источник
comment
Нижние индексы отображаются с использованием точки в Ubuntu 14.04 (кроме края x2 -> y1): возможно, проблема с Windows, а не с точкой   -  person user20650    schedule 28.05.2015
comment
Спасибо, это помогло отследить его. Вопрос в том, какая проблема с Windows. Я думал, что это может быть связано с использованием fontname="Helvetica" для краев, но удаление этого дает тот же результат.   -  person user101089    schedule 28.05.2015


Ответы (1)


Вы можете использовать метки, подобные HTML, и SUB вместо escape-символов html.

Пример:

1 -> 2 [label=<&#947;<SUB>0</SUB>>];
person marapet    schedule 28.05.2015