使用 LaTeX 在 matplotlib 中绘制状态图/图形?

使用 LaTeX 在 matplotlib 中绘制状态图/图形?

有没有办法在 matplotlib 中绘制以下状态图?

在此处输入图片描述

或者,将使用类似包绘制这些图表的 LaTeX 代码嵌入 matplotlib 图形中tikz?理想情况下,我希望用 LaTeX 符号/数学注释边和节点,因此将 LaTeX 嵌入 matplotlib 图形的解决方案是最好的。

答案1

这是一个使用包的潜在解决方案tikz

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,shapes,automata,petri,positioning,calc}

\tikzset{
    place/.style={
        circle,
        thick,
        draw=black,
        fill=gray!50,
        minimum size=6mm,
    },
        state/.style={
        circle,
        thick,
        draw=blue!75,
        fill=blue!20,
        minimum size=6mm,
    },
}

\begin{document}

\begin{tikzpicture}[node distance=2cm and 1cm,>=stealth',auto, every place/.style={draw}]
    \node [place] (S1) {S1};
    \coordinate[node distance=1.1cm,left of=S1] (left-S1);
    \coordinate[node distance=1.1cm,right of=S1] (right-S1);

    \draw[->, thick] (left-S1) -- (S1);

    \node [place] (S2) [right=of S1] {S2};
    \node [place] (S3) [node distance=1.5cm,below =of right-S1] {S3};    
    \node [state,initial text=,accepting by double] (S4) [right=of S3] {S4};

    \path[->] (S1) edge [bend left] node {a} (S2);
    \path[->] (S2) edge [bend left] node {b} (S1);
    \path[->] (S2) edge [loop above] node {a} ();
    \path[->] (S3) edge [bend left] node {a} (S1);
    \path[->] (S2) edge [bend left] node {c} (S4);
    \path[->] (S3) edge [bend left] node {b} (S4);
    \path[->] (S4) edge [bend left] node {d} (S3);      
\end{tikzpicture}
\end{document}

输出

出去

$ $您可以在节点和路径(弧)标签中使用数学符号,例如将它们放在中间:\path[->] (S1) edge [bend left] node {$x^2$} (S2);当然,您可以通过\tikzset设置按照您喜欢的方式更改样式。

相关内容