下标&点边标签中的希腊字母

时间:2015-05-28 12:50:08

标签: r math fonts graphviz dot

这是Using symbol font / math notation in graphviz的后续内容,也发布在Graphviz论坛http://www.graphviz.org/content/subscripts-greek-letters-dot-edge-labels上,但没有回应。

[环境:graphviz 2.38,Windows 7]

我正在开发一个项目,用sem包为R中的结构方程模型创建路径图 sem包中包含一个函数pathDiagram,通过构造dot所需的代码,可以很好地完成这项工作。

我们使用两个后端渲染器:dot本身,使用-Tpdf,R DiagrammeR package使用javascript库grViz和美人鱼。

我们最近添加了代码,允许使用希腊字母和下标来渲染边缘标签 使用UTF-8字符等价物,例如

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

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

我们发现这与DiagrammeR完美配合。使用dot,我们获取希腊字母,但是 我们尝试过的任何东西都不允许我们从标准命令中获取下标 dot -T pdf -o file.pdf file.dot 我们得到的只是那些带有4位字符代码的小盒子。

这是dot的错误还是限制?有没有解决办法?

以下是我们的软件生成的点文件示例,说明了此行为。

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)

enter image description here

(在此示例中,我还尝试使用Unicode字符作为x2 -> y1路径中的下标,这些字符取自How to find the unicode of the subscript alphabet?,但这些字符仅显示为&2081;字符串。)< / p>

1 个答案:

答案 0 :(得分:1)

您可以考虑使用Html-like labelsSUB标记代替html转义字符。

示例:

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