
我是在乳膠中創建圖形(在本例中為決策樹)的新手。我已經弄清楚如何繪製我需要的樹,但我需要一些幫助才能使它看起來更好。具體來說,我想讓文字標籤(例如無/部分/完整/否/是)與它們標記的路徑平行。下面是我的程式碼和我的樹的圖像。我在樹上放置了紅色箭頭,顯示了我希望不同文字標籤的方向。感謝您的幫忙!
\documentclass[12pt, fullpage,letterpaper]{article}
\usepackage{verbatim}
\usepackage{tikz}
\usetikzlibrary{calc, shapes}
\usepackage{amsmath, amssymb}
\begin{document}
\tikzset{
Patrons/.style = {text = black, label = center:\textsf{Patrons}},
Friday/.style = {text = black, label = center:\textsf{Friday}},
Hungry/.style = {text = black, label = center:\textsf{Hungry}},
No/.style = {text = black, label = center:\textsf{No}},
Yes/.style = {text = black, label = center:\textsf{Yes}}
}
\begin{tikzpicture}[
scale = 1, transform shape, thick,
every node/.style = {draw, rectangle, minimum size = 15mm},
grow = down,
level 1/.style = {sibling distance=4cm},
level 2/.style = {sibling distance=4cm},
level 3/.style = {sibling distance=2cm},
level distance = 3cm
]
\node [Patrons] (A) {}
child { node [No] (B) {}}
child { node [Yes] (C) {}}
child { node [Friday] (D) {}
child { node [Hungry] (E) {}
child { node [No] (G) {}}
child { node [Yes] (H) {}}
}
child { node [No] (F) {}}
};
% Labels
\begin{scope}[nodes = {draw = none}]
\path (A) -- (B) node [near start, left] {None};
\path (A) -- (C) node [near start, left] {Some};
\path (A) -- (D) node [near start, right] {Full};
\path (D) -- (E) node [near start, left] {Yes};
\path (E) -- (F) node [near start, left] {No};
\path (E) -- (G) node [near start, right] {Yes};
\path (D) -- (H) node [near start, right] {No};
\end{scope}
\end{tikzpicture}
\end{document}
答案1
對樹使用簡單的樣式-例如只需要填入名稱-
child { node [P] (D) {Friday} %--- only Friday needs to be filled now
從而避免重複
類似地,對於標籤,設定了帶有傾斜選項的簡單樣式 - 看一下 - 標籤部分中的節點也需要放置在緊接其後--
而不是末尾
\documentclass[12pt, fullpage,letterpaper]{article}
\usepackage{verbatim}
\usepackage{tikz}
\usetikzlibrary{calc, shapes}
\usepackage{amsmath, amssymb}
\begin{document}
\tikzset{
P/.style = {text = black, label = center:\textsf{#1}},
% Friday/.style = {text = black, label = center:\textsf{#1}},
% Hungry/.style = {text = black, label = center:\textsf{Hungry}},
% No/.style = {text = black, label = center:\textsf{No}},
% Yes/.style = {text = black, label = center:\textsf{Yes}}
}
\begin{tikzpicture}[
scale = 1, transform shape, thick,
every node/.style = {draw, rectangle, minimum size = 15mm},
grow = down,
level 1/.style = {sibling distance=4cm},
level 2/.style = {sibling distance=4cm},
level 3/.style = {sibling distance=2cm},
level distance = 3cm
]
\node [P] (A) {}
child { node [P] (B) {}}
child { node [P] (C) {}}
child { node [P] (D) {Friday}
child { node [P] (E) {}
child { node [P] (G) {}}
child { node [P] (H) {}}
}
child { node [P] (F) {}}
};
% Labels
\begin{scope}[nodes = {draw = none},pos=0.3, sloped,left]
\path (A) -- node [yshift=5pt] {None} (B) ;
% \path (A) -- (C) node [] {Some};
% \path (A) -- (D) node [] {Full};
% \path (D) -- (E) node [] {Yes};
% \path (E) -- (F) node [] {No};
% \path (E) -- (G) node [] {Yes};
% \path (D) -- (H) node [] {No};
\end{scope}
\end{tikzpicture}
\end{document}