我尝试过几次绘制一个以连续状态S0-> S1-> S2表示连续状态的图形。然后在下面的另一条直线上动作。 S0-> A0-> S1-> A1-> S2之间有边。形成三角形并排排列的三角形。
我尝试使用群集,并且要对齐的节点的等级=相同。我也尝试在Stack Overflow上使用[constraint = false]和其他答案。
\begin{dot2tex}[fdp]
digraph G {
newrank=true;
node[group="states"]
S0 [texlbl="$S_{t-2}$", shape=none];
S1 [texlbl="$S_{t-1}$", shape=none];
S2 [texlbl="$S_t$", shape=none];
S3 [texlbl="$S_{t+1}$", shape=none];
node[group=""]
A0 [texlbl="$A_{t-2}$", shape=none];
A1 [texlbl="$A_{t-1}$", shape=none];
A2 [texlbl="$A_t$", shape=none];
{ rank=same; S0; S1; S2; S3;
S0 -> S1-> S2 -> S3;
S0 -> A0;
S1 -> A1;
S2 -> A2; }
A0 -> S1;
A1 -> S2;
A2 -> S3;
}
\end{dot2tex}
答案 0 :(得分:1)
似乎您正在使用fdp布局引擎。
fdp使用“弹簧”模型绘制无向图。它以弗鲁希特曼(Fruchterman)和莱因戈德(Reingold)的精神为基础,采用了以力为导向的方法
根据您的情况,您需要使用点布局引擎。
我对您所使用的程序不熟悉,但是疯狂的猜测是将\begin{dot2tex}[fdp]
替换为\begin{dot2tex}[dot]
答案 1 :(得分:1)
您的代码看起来像是LaTeX文档的一部分,但对我而言不起作用;据我所知,dot2tex
是一个生成LaTeX代码的Python脚本。但是我不在这里,似乎对您有用。
我所做的-我纠正了您所犯的错误,将}
指令的右括号rank = same
回到同一行,并从明显的LaTeX环境中删除了它;我还更改了显示“向上”的边缘的箭头方向。然后我注释掉了不必要的指示,到达了
digraph G {
# newrank=true;
# node[group="states"]
S0 [texlbl="$S_{t-2}$", shape=none];
S1 [texlbl="$S_{t-1}$", shape=none];
S2 [texlbl="$S_t$", shape=none];
S3 [texlbl="$S_{t+1}$", shape=none];
# node[group=""]
A0 [texlbl="$A_{t-2}$", shape=none];
A1 [texlbl="$A_{t-1}$", shape=none];
A2 [texlbl="$A_t$", shape=none];
{ rank=same; S0; S1; S2; S3; }
S0 -> S1-> S2 -> S3;
S0 -> A0;
S1 -> A1;
S2 -> A2;
edge[ dir = back ];
S1 -> A0;
S2 -> A1;
S3 -> A2;
}
使用
将其转换为LaTex文档dot2tex -ftikz x > x.tex
我明白了
我想这就是您想要的,或者至少是您的代码将产生的内容。您的工作流程可能有所不同,但是如果您纠正了主要错误并将右大括号移到了它所在的位置,则应该完成此工作。请注意,dot2tex
默认使用dot
引擎,这是您应该执行的操作,如正确指出的是@Dany。
如果您想要的内容与帖子中的图片很接近,请尝试
digraph G
{
node[ shape =none ]
S [ label = "" ];
S0 [ texlbl="$S_{t-2}$" ];
S1 [ texlbl="$S_{t-1}$" ];
S2 [ texlbl="$S_t$" ];
S3 [ texlbl="$S_{t+1}$" ];
A0 [ texlbl="$A_{t-2}$" ];
A1 [ texlbl="$A_{t-1}$" ];
A2 [ texlbl="$A_t$" ];
{ rank=same; S S0 S1 S2 S3 }
S0 -> S1 -> S2 -> S3
S0 -> A1;
S1 -> A2;
edge[ dir = back ];
S0 -> A0;
S1 -> A1;
S2 -> A2;
edge[ style = invis ];
S -> S1
S -> A0;
}