如何在 LaTeX 中绘制图形?

如何在 LaTeX 中绘制图形?

我需要绘制简单的图形(例如彼得森图) 在 LaTeX 中。

我在 Ubuntu 中使用 Kile。

答案1

我认为最好的方法是使用tkz-berge来自 Altermundus 的包裹。

但是,要使用 创建一个简单的示例TikZ,您可以遵循以下步骤:

\documentclass {article}

% example taken from 
% http://www.guitex.org/home/images/doc/GuideGuIT/introingtikz.pdf

\usepackage {tikz}
\usetikzlibrary {positioning}
%\usepackage {xcolor}
\definecolor {processblue}{cmyk}{0.96,0,0,0}
\begin {document}
\begin {center}
\begin {tikzpicture}[-latex ,auto ,node distance =4 cm and 5cm ,on grid ,
semithick ,
state/.style ={ circle ,top color =white , bottom color = processblue!20 ,
draw,processblue , text=blue , minimum width =1 cm}]
\node[state] (C)
{$1$};
\node[state] (A) [above left=of C] {$0$};
\node[state] (B) [above right =of C] {$2$};
\path (A) edge [loop left] node[left] {$1/4$} (A);
\path (C) edge [bend left =25] node[below =0.15 cm] {$1/2$} (A);
\path (A) edge [bend right = -15] node[below =0.15 cm] {$1/2$} (C);
\path (A) edge [bend left =25] node[above] {$1/4$} (B);
\path (B) edge [bend left =15] node[below =0.15 cm] {$1/2$} (A);
\path (C) edge [bend left =15] node[below =0.15 cm] {$1/2$} (B);
\path (B) edge [bend right = -25] node[below =0.15 cm] {$1/2$} (C);
\end{tikzpicture}
\end{center}
\end{document}

这导致:

在此处输入图片描述

这是马尔可夫链的一个示例,其中TikZ使用了多个选项。在同一指南中,您将找到一个将节点放置在矩阵中的示例。

答案2

您可以使用 tkz-berge 包。此包使用 TikZ,可以添加 TikZ 的所有命令。

以下是彼得森图的三种经典形式

\documentclass[11pt]{scrartcl}
\usepackage{tkz-berge}


\begin{document}
\begin{tikzpicture}[scale=.5] 
\GraphInit[vstyle=Art] 
\SetGraphArtColor{red}{olive} 
\grPetersen[form=1,RA=5,RB=3]%
\end{tikzpicture}
\begin{tikzpicture}[scale=.4]
   \GraphInit[vstyle=Art] 
   \SetGraphArtColor{red}{olive} 
   \grPetersen[form=2,RA=7,RB=3]%
\end{tikzpicture}

\begin{tikzpicture}[scale=.5]
   \GraphInit[vstyle=Art] 
   \SetGraphArtColor{red}{olive} 
   \grPetersen[form=3,RA=7]%
\end{tikzpicture}
\end{document}

在此处输入图片描述

我写了一份包含一些经典命名图表的文档。它位于您的发行版中(我认为是 2011 年以上)

texdoc NamedGraphs在终端

我添加了来源和所有示例,您也可以在这里找到它们

命名图

答案3

这里有一个仅使用 TikZ 绘制 Petersen 图的示例,我尝试正确构造代码。第一个范围用于顶点,第二个范围用于边。唯一的问题是使用“mod”获取边

       \pgfmathtruncatemacro{\nextb}{mod(\i+1,5)}
       \pgfmathtruncatemacro{\nexta}{mod(\i+2,5)} 

完整代码

  \documentclass[border=6pt]{standalone}
  \usepackage{tikz}

  \begin{document}

  \begin{tikzpicture} 
    \begin{scope} [vertex style/.style={draw,
                                       circle,
                                       minimum size=6mm,
                                       inner sep=0pt,
                                       outer sep=0pt,
                                       shade}] 
      \path \foreach \i in {0,...,4}{%
       (72*\i:2) coordinate[vertex style] (a\i)
       (72*\i:4) coordinate[vertex style] (b\i)}
       ; 
    \end{scope}

     \begin{scope} [edge style/.style={draw=gray,double=white}]
       \foreach \i  in {0,...,4}{%
       \pgfmathtruncatemacro{\nextb}{mod(\i+1,5)}
       \pgfmathtruncatemacro{\nexta}{mod(\i+2,5)} 
       \draw[edge style] (a\i)--(b\i);
       \draw[edge style] (a\i)--(a\nexta);
       \draw[edge style] (b\i)--(b\nextb);
       }  
     \end{scope}

  \end{tikzpicture}
  \end{document} 

在此处输入图片描述

答案4

如果您不想自己进行布局,可以使用 Graphviz 进行布局。这将生成一个“.dot”文件,可以使用 dot2tex 将其转换为 Latex。

我刚刚使用 GraphvizFiddle 工具获取了 Petersen 图的“circo”布局,并验证了 dot2tex 是否有效。以下是分享链接对于 Petersen 图,将输出从“svg”切换到“dot”,然后按“Draw”按钮以获取 Petersen“.dot”文件。tex 输出也使用“tikzpicture”。

在此处输入图片描述

相关内容