
종속성 그래프를 그리려고 노력 중입니다.이것예를 들어, 하나의 노드에 어려움을 겪고 있습니다. t
두 개의 자식을 가지려면 노드가 필요합니다 : r_vec
및 dR
. 그런데 t
과 를 어떻게 연결하는지 모르겠습니다 dR
.
다음 코드가 있습니다.
\documentclass[a4paper]{article}
\usepackage{tikz}
\definecolor{pink}{RGB}{255,182,193}
\begin{document}
\begin{figure}
\begin{tikzpicture}[sibling distance=10em,
every node/.style = {shape=rectangle, rounded corners,
draw, align=center, minimum height=0.6cm,
fill=pink}], level 7/.style={sibling distance=3cm}]
\node {final\_image}
child { node {complex\_image}
child { node {interp\_result}
child { node {rc}
child { node {ph\_data} }}
child { node {t}
child {node {r\_vec} } } }
child { node {ph\_corr}
child { node [right=1.5cm] {exp}
child { node {dR}
child { node [left=1.3cm] {x\_dist}
child { node {ant\_x} }
child { node {x\_mat} }
}
child { node {y\_dist}
child { node {ant\_y} }
child { node {y\_mat} }
}
child { node [right=1.3cm] {z\_dist}
child { node {ant\_z} }
child { node {z\_mat} }
}
}
child { node {min\_f}}
}}};
\end{tikzpicture}
\end{figure}
\end{document}
이 그래프를 생성하는 방법은 다음과 같습니다.
또한 여백을 무시하고 그래프를 페이지 중앙에 배치하고 싶지만 어떻게 해야 할지 모르겠습니다. 도움을 주셔서 감사합니다!
답변1
흥미로운 노드에 [name=t]
및 이름을 추가 하고 다음을 사용했습니다.[name=dR]
\draw (t) edge (dR);
이 두 노드 사이에 추가 가장자리를 그립니다.
\documentclass{article}
\usepackage{tikz}
\definecolor{pink}{RGB}{255,182,193}
\begin{document}
\begin{figure}
\centering
\makebox[0pt]{%
\begin{tikzpicture}[
sibling distance=10em,
every node/.style = {shape=rectangle, rounded corners,
draw, align=center, minimum height=0.6cm,
fill=pink}], level 7/.style={sibling distance=3cm}
]
\node {final\_image}
child { node {complex\_image}
child { node {interp\_result}
child { node {rc}
child { node {ph\_data} }}
child { node[name=t] {t}
child {node {r\_vec} } } }
child { node {ph\_corr}
child { node [right=1.5cm] {exp}
child { node[name=dR] {dR}
child { node [left=1.3cm] {x\_dist}
child { node {ant\_x} }
child { node {x\_mat} }
}
child { node {y\_dist}
child { node {ant\_y} }
child { node {y\_mat} }
}
child { node [right=1.3cm] {z\_dist}
child { node {ant\_z} }
child { node {z\_mat} }
}
}
child { node {min\_f}}
}}};
\draw (t) edge (dR);
\end{tikzpicture}%
}
\end{figure}
\end{document}
답변2
두 가지 목표를 모두 달성하는 것이 더 간단 하며 forest
코드도 훨씬 더 간결합니다.
\documentclass[a4paper]{article}
\usepackage{forest}
\definecolor{pink}{RGB}{255,182,193}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
\begin{figure}
\centering
\begin{forest}
for tree = {
% nodes
draw, rounded corners, fill=pink, minimum height=6mm,
% tree
anchor = north,
l sep = 7mm,
s sep = 3mm,
tier/.option = level, % <--- corrected now
where level = {5}{s sep=2mm}{}
}% end for tree
[final\_image
[complex\_image
[interp\_result
[rc
[ph\_data]
]
[t, name=t
[r\_vec]
]
]
[ph\_corr
[ , phantom]
[exp
[dR, name=dr
[x\_dist
[ant\_x]
[x\_mat]
]
[y\_dist
[ant\_y]
[y\_mat]
]
[z\_dist
[ant\_z]
[z\_mat]
]
]
[min\_f]
]
]
]
]
\draw (t) -- ([xshift=-4pt] dr.north);
\end{forest}
\end{figure}
\end{document}
(빨간색 선은 텍스트 테두리를 나타냅니다)
편집하다:
이제 MWE가 수정되었으며 for
사양에 손실된 혼수상태가 추가되었습니다.