現在、ジャーナル出版用の意思決定ツリーを作成中で、スペースを節約する必要があります。
現時点での私の意思決定ツリーは次のようになります
これは良いのですが、ツリーを垂直方向に「圧縮」したいのです (つまり、ノードを垂直方向に互いに近づけます)。
TikZ を使用してこれを行う方法を誰か知っていますか? 以下のコードでいくつかの設定をいじってみましたが、何も機能しないようです。
\documentclass[letterpaper]{article}
\usepackage{aaai}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{shapes,arrows}
\frenchspacing
\setlength{\pdfpagewidth}{8.5in}
\setlength{\pdfpageheight}{11in}
\tikzstyle{block} = [rectangle, draw, fill=white!20,
text width=6em, text centered, rounded corners, minimum height=1em]
\tikzstyle{line} = [draw, -latex']
\tikzstyle{cloud} = [draw, text centered, ellipse,fill=gray!15, node distance=0cm, text width=3.3em,
minimum height=0.0em]
%begin tree
\begin{center}
\begin{tikzpicture}[node distance =0cm, auto]
% Place nodes
\small
\centering
\node [block] (init) {\scriptsize{history of petty theft?}};
\node [cloud, left of=init, below of=init, node distance=1.5cm] (end1) {\scriptsize{no violent crime}};
\node [block, right of=init, below of=init, node distance=1.5cm] (dec1) {\scriptsize{history of weapon use?}};
\node [cloud, right of=dec1, below of=dec1, node distance=1.5cm] (end2) {\scriptsize{no violent crime}};
\node [block, left of=dec1, below of=dec1, node distance=1.5cm] (dec2) {\scriptsize{history of employment?}};
\node [cloud, left of=dec1, below of=dec2, node distance=1.5cm] (end3) {\scriptsize{no violent crime}};
\node [cloud, right of=dec1, below of=dec2, node distance=1.5cm] (end4) {\scriptsize{violent crime}};
% Draw edges
\path [line] (init) -| node [near start, above] {\scriptsize{yes}} (end1);
\path [line] (init) -| node [near start] {\scriptsize{no}} (dec1);
\path [line] (dec1) -| node [near start, above] {\scriptsize{yes}} (dec2);
\path [line] (dec1) -| node [near start] {\scriptsize{no}} (end2);
\path [line] (dec2) -| node [near start, above] {\scriptsize{yes}} (end3);
\path [line] (dec2) -| node [near start] {\scriptsize{no}} (end4);
\end{tikzpicture}
\end{center}
答え1
なぜツリーを使用しないのですか? 垂直距離は キーを使用して変更できます。フォントが キーを使用して設定されるようになったためlevel distance
、テキスト幅を に変更したことに注意してください (この例では、キーでまたは が単位として使用されている場合、配置に問題があるようですが、理由はわかりません)。cm
font
ex
em
text width
いつものように、画像の前のオプションで少し余分な作業を行ったので、描画コードがあまり乱雑になりません。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\tikzset{
every node/.style={
font=\scriptsize
},
decision/.style={
shape=rectangle,
minimum height=1cm,
text width=2cm,
text centered,
rounded corners=1ex,
draw,
label={[yshift=0.125cm]left:yes},
label={[yshift=0.125cm]right:no},
},
outcome/.style={
shape=ellipse,
fill=gray!15,
draw,
text width=1.5cm,
text centered
},
decision tree/.style={
edge from parent path={[-latex] (\tikzparentnode) -| (\tikzchildnode)},
sibling distance=3cm,
level distance=1.125cm
}
}
\begin{tikzpicture}
\node [decision] { history of petty theft? }
[decision tree]
child { node [outcome] { no violent crime } }
child { node [decision] { history of weapon use}
child { node [decision] { history of employment? }
child { node [outcome] { no violent crime } }
child { node [outcome] { violent crime } }
}
child { node [outcome] { no violent crime } }
};
\end{tikzpicture}
\end{document}