在graphviz中使用符号字体/数学符号

use*_*089 6 math fonts dot graphviz

[环境:graphviz 2.38/Windows 7]

使用dot,我想生成如下的路径图来表示结构方程模型(嗯,这里,只是一个简单的单因素测量模型).我想在某些节点和边缘使用希腊字母,如果我可以在点文件中使用类似LaTeX的表示法\ksi,\lambda_1或者更喜欢\delta_1

threevar

该图应该代表三个方程

\begin{eqnarray*}
x_{1i} & = & \lambda_1 \xi_{i} + \delta_{1i} \\
x_{2i} & = & \lambda_2 \xi_{i} + \delta_{2i} \\
x_{3i} & = & \lambda_3 \xi_{i} + \delta_{3i} 
\end{eqnarray*}
Run Code Online (Sandbox Code Playgroud)

我最接近的是以下.dot文件kludge,我选择了font ="Symbol"并用他们的罗马等价物替换了希腊字母.

但是,这不适用于dot -TpdfAFAICS或Postscript以外的任何其他设备dot -Tps,给我一个.eps我必须转换为PDF或PNG的文件.

问题:这种情况有什么好处吗?

digraph threevar {
  rankdir=LR;
  size="8,4";
  node [fontname="Helvetica" fontsize=14 shape=box];
  edge [fontname="Symbol" fontsize=10];
  center=1;
  {rank=min k }
  {rank=same X1 X2 X3 }
  {rank=max z1 z2 z3 }
  z1 [shape=circle fontname="Symbol" label="d1"];
  z2 [shape=circle fontname="Symbol" label="d2"];
  z3 [shape=circle fontname="Symbol" label="d3"];
  k [fontname="Symbol" label="x" shape="ellipse"];
  k -> X1 [label="l1"];
  k -> X2 [label="l2"];
  k -> X3 [label="l3"];
  z1 -> X1;
  z2 -> X2;
  z3 -> X3;
}
Run Code Online (Sandbox Code Playgroud)

use*_*089 4

好的,直接在 .dot 文件中使用 UTF8 字符,我现在可以避免符号字体拼凑(但我尝试下标,例如下标一,x2081 只是有一个包含“2081”的小框)

这是修改后的文件,现在适用于-Tpdf-Tpng。(UTF8 字符在这篇文章中没有正确显示。)

    digraph threevar {
      rankdir=LR;
      size="8,4";
      node [fontsize=14 shape=box];
      edge [fontsize=10];
      center=1;
      {rank=min k }
      {rank=same X1 X2 X3 }
      {rank=max z1 z2 z3 }
      z1 [shape=circle label="d1"];
      z2 [shape=circle label="d2"];
      z3 [shape=circle label="d3"];
      k [label="?" shape="ellipse"];
      k -> X1 [label="?1"];
      k -> X2 [label="?2"];
      k -> X3 [label="?3"];
      z1 -> X1;
      z2 -> X2;
      z3 -> X3;
    }
Run Code Online (Sandbox Code Playgroud)

结果是:

在此输入图像描述