오래 전에 나는 확률 트리(아래 그림 참조)에 대한 코드를 작성했지만 불행히도 코드를 잃어버렸습니다. 누군가 아이디어를 가지고 있나요? 어떻게 다시 실현할 수 있나요?
이미 이전 버전을 사용해 보았지만 실패했습니다.
\begin{figure}[H]
\centering
\begin{tikzpicture}[line cap=round,line join=round,>=triangle 45,x=0.6cm,y=0.5cm]
\clip(0,-6.5) rectangle (18,6);
\draw [line width=2pt] (2,-1)-- (9,2);
\draw [line width=2pt] (2,-1)-- (9,-4);
\draw [line width=2pt] (9,2)-- (16,4);
\draw [line width=2pt] (9,2)-- (16,0);
\draw [line width=2pt] (9,-4)-- (16,-2);
\draw [line width=2pt] (9,-4)-- (16,-6);
\filldraw [red] (2,-1) circle (2.8pt);
\filldraw [red] (9,2) circle (2.8pt);
\filldraw [red] (9,-4) circle (2.8pt);
\filldraw [red] (16,-6) circle (2.8pt);
\filldraw [red] (16,-2) circle (2.8pt);
\filldraw [red] (16,4) circle (2.8pt);
\filldraw [red] (16,0) circle (2.8pt);
\node (A) at (9,2.8) {$V$};
\node (B) at (9,-3.2) {$\overline{V}$};
\node (C) at (16,4.8) {$S$};
\node (D) at (16,0.8) {$\overline{S}$};
\node (E) at (16,-1.2) {$S$};
\node (F) at (16,-5.2) {$\overline{S}$};
\node (G) at (5,1.5) {\scriptsize {\color{blue}$P(V)=0,4$}};
\node (G) at (5,-3.5) {\scriptsize {\color{blue}$P(\overline{V})=0,6$}};
\node (G) at (12,3.8) {\scriptsize {\color{blue}$P(S|V)=0,6$}};
\node (G) at (12,0) {\scriptsize {\color{blue}$P(\overline{S}|V)=0,4$}};
\node (G) at (12,-2) {\scriptsize {\color{blue}$P(S|\overline{V})=0,3$}};
\node (G) at (12,-6) {\scriptsize {\color{blue}$P(\overline{S}|\overline{V})=0,7$}};
\end{tikzpicture}
\caption{Baumdiagramm für Aufgabe 11}
\end{figure}
답변1
즉, 코드를 수정하려면 현재 있는 모든 인스턴스를 교체하세요.
\filldraw [red] (x,y) circle (2.8pt);
~와 함께
\node [draw=black,fill=red!10,circle] at (x,y) {$A$};
첫 번째 빨간색 원을 제외하고는 제거하면 됩니다. 물론 $A$
문제의 노드에 대한 적절한 기호로 교체하십시오. 다음은 제가 약간 정리한 코드 버전입니다. 노드의 텍스트를 변경하지 않았지만 관리할 수 있습니다.
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[line cap=round,line join=round,x=0.6cm,y=0.5cm]
\coordinate (O) at (2,-1);
\begin{scope}[every node/.style={circle,draw=black,fill=red!10}]
\node (A) at (9,2) {$V$};
\node (B) at (9,-4) {$\overline{V}$};
\node (C) at (16,4) {$S$};
\node (D) at (16,0) {$\overline{S}$};
\node (E) at (16,-2) {$S$};
\node (F) at (16,-6) {$\overline{S}$};
\end{scope}
\draw (O) -- (A) -- (C)
(A) -- (D)
(O) -- (B) -- (E)
(B) -- (F);
\begin{scope}[every node/.style={blue,font=\scriptsize}]
\node at (5,1.5) {$P(V)=0,4$};
\node at (5,-3.5) {$P(\overline{V})=0,6$};
\node at (12,3.8) {$P(S|V)=0,6$};
\node at (12,0) {$P(\overline{S}|V)=0,4$};
\node at (12,-2) {$P(S|\overline{V})=0,3$};
\node at (12,-6) {$P(\overline{S}|\overline{V})=0,7$};
\end{scope}
\end{tikzpicture}
\end{document}
TikZ 트리
그러나 이것은 트리이므로 다음과 같이 TikZ의 트리 그리기 기능을 사용할 수도 있습니다.
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[
circ/.style={draw=black,fill=red!15,circle},
grow=right,
level 1/.style={sibling distance=2cm},
level 2/.style={sibling distance=1cm},
level distance=3cm]
\node [coordinate] {}
child {
node[circ] {$\bar{A}$}
child { node[circ] {$\bar{D}$}
edge from parent
node [below=2] {$0.9999$}}
child { node[circ] {$D$}
edge from parent
node [above=2] {$0.0001$}}
edge from parent
node [below=2] {$0.9999$}
}
child {
node[circ] {$A$}
child { node[circ] {$\bar{D}$}
edge from parent
node [below=2] {$0.0001$}}
child { node[circ] {$D$}
edge from parent
node [above=2] {$0.9999$}
}
edge from parent
node [above=2] {$0.0001$}
};
\end{tikzpicture}
\end{document}
forest
forest
아니면 좀 더 인기가 있는 더 강력한 패키지를 사용하는 경우도 있습니다. 하지만 저는 전문가가 아니기 때문에 가장자리 라벨을 더 우아하게 해결할 수 있을 가능성이 높습니다.
\documentclass[border=5mm]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={
math content,
if n=0{coordinate}{circle,draw=black,fill=red!10},
grow=0,
l=3cm
}
[
[\overline{A},edge label={node[midway,below=2pt]{0.9999}}
[\overline{D},edge label={node[midway,below]{0.9999}}]
[D,edge label={node[midway,above]{0.0001}}]
]
[A,edge label={node[midway,above=2pt]{0.0001}}
[\overline{D},edge label={node[midway,below]{0.0001}}]
[D,edge label={node[midway,above]{0.9999}}]
]
]
\end{forest}
\end{document}
답변2
작은 변형숲경우에T.토르비욘답변:
\documentclass[border=5mm]{standalone}
\usepackage{forest}
\usetikzlibrary{shadows}% <-- added
\begin{document}
\forestset{% <-- added
EL/.style 2 args={% shortens for (my) edge label
edge label={node[midway, font=\footnotesize, #1]{#2}},
},
}% end of forestset
\begin{forest}
for tree={
math content, % <-- all text is math
if n=0{coordinate}{circle,draw=black,fill=red!10,drop shadow},% <-- slightly changed
grow=0,
l sep = 24mm,
}% end of for tree
[
[\overline{A},EL={below=1pt}{0.9999}% <-- changed
[\overline{D},EL={below}{0.9999}]
[D,EL={above}{0.0001}]
]
[A,EL={above=2pt}{0.0001}
[\overline{D},EL={below}{0.0001}]
[D,EL={above}{0.9999}]
]
]
\end{forest}
\end{document}
차이점은 가장자리의 라벨을 쓰는 데 있습니다. 결과는 비슷합니다.
(사용된 라벨 작성에 대한 아이디어는 다음에서 가져왔습니다.CFR답변여기.)