在graphviz中使用符号字体/数学符号 [英] Using symbol font / math notation in graphviz
问题描述
点
,我想生成类似于下面代表一个结构方程模型(好吧,这里只是一个简单的单因子测量模型)。我希望使用希腊字母来表示一些节点和边,如果我可以在像 \ksi
,<$这样的点文件中使用类似LaTeX的符号, c $ c> \ lambda_1 或 \delta_1
这张图应该代表三个方程
\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;
节点[fontname =Helveticafontsize = 14 shape = box];
edge [fontname =Symbolfontsize = 10];
center = 1;
{rank = min k}
{rank = same X1 X2 X3}
{rank = max z1 z2 z3}
z1 [shape = circle fontname =Symbollabel = D1];
z2 [shape = circle fontname =Symbollabel =d2];
z3 [shape = circle fontname =Symbollabel =d3];
k [fontname =Symbollabel =xshape =ellipse];
k - > X1 [label =l1];
k - > X2 [label =l2];
k - > X3 [label =l3];
z1 - > X1;
z2 - > X2;
z3 - > X3;
$ / code>
好的,直接使用UTF8字符在.dot文件中,我现在可以避免符号字体kludge(但是我尝试了下标,例如下标一,
x2081只有一个包含'2081'的小方块)
以下是修改后的文件,现在可用于 -Tpdf
和 -Tpng
。 (UTF8字符在这篇文章中没有正确显示。)
digraph threevar {
rankdir = LR;
size =8,4;
节点[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 =?形状= 椭圆];
k - > X1 [label =?1];
k - > X2 [label =?2];
k - > X3 [label =?3];
z1 - > X1;
z2 - > X2;
z3 - > X3;
$ / code $ / pre
$ b $ p结果是:
[Environment: graphviz 2.38 / Windows 7]
Using dot
, I want to produce path diagrams like the following to represent a structural equation model (well, here, just a simple one-factor measurement model). I'd like to use Greek letters for some nodes and edges, and would actually prefer if I could use LaTeX-like notation in the dot file like \ksi
, \lambda_1
or \delta_1
This diagram is supposed to represent the three equations
\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*}
The closest I've come to this is the following .dot file kludge, where I
chose font="Symbol" and replaced the Greek letters by their roman equivalents.
However, this doesn't work with dot -Tpdf
or AFAICS any other devices other
than Postscript dot -Tps
, giving me an .eps
file I have to convert to PDF or PNG.
Question: is there anything better for this situation?
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;
}
解决方案 OK, using UTF8 characters directly in the .dot file, I can now avoid the Symbol font kludge (but what I tried for subscripts, e.g., subscript-one,
x2081 just have a small box containing '2081')
Here's the revised file, that now works with both -Tpdf
and -Tpng
. (The UTF8 characters don't appear properly in this post.)
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;
}
The result is:
这篇关于在graphviz中使用符号字体/数学符号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!