有没有办法使乳胶中的贝叶斯图更漂亮?

问题描述

有没有办法让左边的图形更像右边的图形?我希望它更圆,节点是椭圆形的。然后,欢迎任何使图表更可爱的建议。

这是我的代码

\begin{center}
\begin{tikzpicture}[node distance={25mm},thick]
\node[main] (1) {x0};
\node[main] (2) [above right of=1] {x1};
\node[main] (3) [below right of=1] {x2}; 
\node[main] (4) [right of=2] {x3};
\node[main] (5) [right of=3] {x4}; 
\node[main] (6) [below right of=3] {x5};
\node[main] (7) [below right of=4] {x6}; 
\end{tikzpicture} 
\end{center}

enter image description here

解决方法

有一个名为 ellipse 的节点形状,它使节点形状像一个椭圆。您可以使用 text widthinner septext height 确定大小。为了使节点排列成真正的圆形,您可以定义一个空的中心节点并使用一个角度和所有相同的半径计算每个其他节点的位置。

示例代码(我重命名了节点,因为我发现索引/标签令人困惑):

\documentclass{report}
\usepackage{tikz}
\usetikzlibrary{shapes,calc}

\begin{document}

\begin{center}

\tikzset{ellipsenode/.style={draw,ellipse,thick,text width=6ex,align=center,inner sep=3pt}}

\begin{tikzpicture}[node distance={25mm},thick]
\node (center) [circle] {};
\node (x0) at ($(center)+(170:25mm)$)[ellipsenode] {x0};
\node (x1) at ($(center)+(120:25mm)$)[ellipsenode] {x1};
\node (x2) at ($(center)+(210:25mm)$)[ellipsenode] {x2}; 
\node (x3) at ($(center)+(60:25mm)$)[ellipsenode] {x3};
\node (x4) at ($(center)+(330:25mm)$)[ellipsenode] {x4}; 
\node (x5) at ($(center)+(270:25mm)$)[ellipsenode] {x5};
\node (x6) at ($(center)+(10:25mm)$)[ellipsenode] {x6}; 
\end{tikzpicture} 
\end{center}
\end{document}

输出:

enter image description here

现在困难的部分是让它更可爱,因为这可能是一个品味问题。我想一些颜色不会伤害。例如,将 ball color=blue!20,opacity=.7 添加到 ellipsenode 样式可以得到:

enter image description here

,

有点类似于@jf_不错的答案,没有额外的步骤来定义中心节点。相反,您可以使用极坐标直接放置节点。

代替 center 环境,我会使用 {\centering ...} 来避免额外的垂直空间。

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{shapes}

\tikzset{main/.style={
  ellipse,minimum width=3em,draw
}} 

\begin{document}

{
\centering
\begin{tikzpicture}[node distance={25mm},thick]
\node[main] at (-0*51.4+180:2cm) {x0};
\node[main] at (-1*51.4+180:2cm) {x1};
\node[main] at (-2*51.4+180:2cm) {x2}; 
\node[main] at (-3*51.4+180:2cm) {x3};
\node[main] at (-4*51.4+180:2cm) {x4}; 
\node[main] at (-5*51.4+180:2cm) {x5};
\node[main] at (-6*51.4+180:2cm) {x6}; 
\end{tikzpicture} 
}

\end{document}

enter image description here