두 개의 다른 노드가 동일한 자식을 부모로 만드는 방법은 무엇입니까?

두 개의 다른 노드가 동일한 자식을 부모로 만드는 방법은 무엇입니까?

종속성 그래프를 그리려고 노력 중입니다.이것예를 들어, 하나의 노드에 어려움을 겪고 있습니다. t두 개의 자식을 가지려면 노드가 필요합니다 : r_vecdR. 그런데 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사양에 손실된 혼수상태가 추가되었습니다.

관련 정보