在graphviz

时间:2015-05-04 22:19:26

标签: math fonts graphviz dot

[环境: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*}

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

但是,这不适用于dot -Tpdf或AFAICS其他任何其他设备 比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;
}

1 个答案:

答案 0 :(得分:3)

好的,直接在.dot文件中使用UTF8字符,我现在可以避免使用符号字体kludge(但我尝试用于下标,例如下标-1, 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;
    }

结果是:

enter image description here