나는 연구 프로젝트를 위해 이 나무를 만들었습니다. 방금 이 질문에 대한 모든 속성의 이름을 변경했습니다. 아래 사진을 보시면 위쪽 형제자매가 너무 혼잡하고 전체적인 사진이 정말 안좋아 보이는 것을 보실 수 있습니다. 특정 레벨에서 형제자매 간의 거리를 어떻게 만들 수 있나요? 이 다이어그램을 좀 더 전문적인 다이어그램처럼 아름답게 만드는 다른 방법이 있나요?
암호:
\documentclass[12pt]{article}
\usepackage[a4paper]{geometry}% just to demonstrate the effects
\usepackage{graphicx}
\usepackage{qtree}
%\usetikzlibrary{arrows}
\usepackage{tikz-qtree}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
%\usepackage{tikz}
\usepackage{tikz-qtree}
\usetikzlibrary{arrows}
\begin{document}
\resizebox{1\linewidth}{!}{%
\begin{tikzpicture}[grow=right]
\tikzset{every tree node/.style={align=center}}
\tikzset{level distance=90pt}
\tikzset{level 1/.style={sibling distance=-50pt}}
\tikzset{edge from parent/.append style={thick,-stealth}}
%\tikzset{execute at begin node=\strut}
\Tree[.text1length1
[.textlength1\\text2
[.text1lenght2 ]
[.asdsdsd
[.asdasdsd
[.text1leng
[.text1lenght2 ]
[.asdasdsd [.text1leng [.text1lengAcid ] ] ]
]
[.text1leng [.text1lengAcid ]]
] %asdasdsd
[.asdEERER
[.text1lenght2 ]
[.asdasdsd [.text1leng [.text1lengAcid ] ] ]
]
[.text1lenght2 ]
] %asdsdsd
[.aASDASD
[.text1leng [.text1lengAcid ]
[.ASDERESSD
[.text1lenght2 ]]
[.asdsdsd
[.text1lenght2 ]
[.asdEERER
[.text1lenght2 ]
[.asdasdsd [.text1leng [.text1lengAcid ] ] ]
]
[.asdasdsd
[.text1leng ][.text1lenght2 ]
[.text1leng [.text1lengAcid ] ]
]
]
[.aASDASD
[.text1leng [.text1lengAcid ] ]
[.ASDERESSD
[.text1lenght2 ]
[.asdsdsd
[.text1lenght2 ]
[.asdEERER [.text1lenght2 ] ]
]
]
]
]
]
]
[.HelloWorld111
[.HelloWorld333 ]
[.text1leng [.text1lengAcid ] ]
]
[.backPress
[.text1lengAcid ]
]
[.Hello ]
[.World11333
[.HelloWorld333 ]
[.Jango ]
[.text1leng [.text1lengAcid ] ]
]
]
\end{tikzpicture}
}
\end{document}
산출:
답변1
다음은당신이 사용하여 생산한 나무forest
. 여기서 문제의 일부는 text1lenght2
. 그러므로 나는 이것들에 하이픈을 넣을 수 없다고 가정했습니다. 가능하다면 더 좋은 결과를 만들 수 있을 것입니다.
stepwise={}{}
나무가 이유 이상으로 확장되는 것을 방지하기 위해 부모와 자식 사이의 경로를 단계별로 따라가는 스타일을 정의했습니다 . 표준 경로는 독수리처럼 직선으로 비행하는 대신 수평/수직 방식으로 이동합니다. 이는 가장자리가 노드와 충돌할 가능성을 줄이기 때문입니다.
남쪽으로 자라는 나무를 사용하는 경우 충돌이 발생하지 않으므로 이 중 어느 것도 필요하지 않습니다.
결과 트리는 상대적으로 작습니다. 크기 조정 없이 가로 A4에 맞습니다. 아시다시피 스케일링 다이어그램은 가능하면 피해야 합니다.
결과는 다음과 같습니다.
코드는 다음과 같습니다.
\documentclass[border=5pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{forest}
\begin{document}
\tikzset{>=latex}
\forestset{
stepwise/.style n args=2{
edge path={
\noexpand\path [draw, \forestoption{edge}] (!u.parent anchor) |- +(#1,#2) |- (.child anchor)\forestoption{edge label};
}
}
}
\begin{forest}
for tree={
edge=->,
grow=east,
align=left,
child anchor=west,
edge path={
\noexpand\path [draw, \forestoption{edge}] (!u.parent anchor) |- (.child anchor)\forestoption{edge label};
},
font=\sffamily
}
[text1length1
[textlength1\\text2
[text1lenght2
]
[asdsdsd
[asdasdsd, stepwise={30pt}{-20pt}
[text1leng
[text1lenght2]
[asdasdsd [text1leng [text1lengAcid]]]
]
[text1leng [text1lengAcid]]
] %asdasdsd
[asdEERER
[text1lenght2]
[asdasdsd [text1leng [text1lengAcid]]]
]
[text1lenght2]
] %asdsdsd
[aASDASD
[text1leng [text1lengAcid]
[ASDERESSD
[text1lenght2]]
[asdsdsd
[text1lenght2]
[asdEERER
[text1lenght2]
[asdasdsd [text1leng [text1lengAcid]]]
]
[asdasdsd
[text1leng ][text1lenght2]
[text1leng [text1lengAcid]]
]
]
[aASDASD
[text1leng [text1lengAcid]]
[ASDERESSD
[text1lenght2]
[asdsdsd
[text1lenght2]
[asdEERER [text1lenght2]]
]
]
]
]
]
]
[HelloWorld111
[HelloWorld333]
[text1leng [text1lengAcid]]
]
[backPress
[text1lengAcid]
]
[Hello]
[World11333
[HelloWorld333, stepwise={25pt}{-15pt}]
[Jango]
[text1leng [text1lengAcid]]
]
]
\end{forest}
\end{document}
편집하다아마도 텍스트가 없는 것이 더 좋을 것입니다. 그러면 트리가 수평으로 더 컴팩트해집니다.
모든 컨텍스트에 권장되는 것은 아니지만 동적으로 음영 처리된 트리도 가능합니다.
\documentclass[border=5pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{forest}
\begin{document}
\tikzset{>=latex}
\forestset{
stepwise/.style n args=2{
edge path={
\noexpand\path [draw, \forestoption{edge}] (!u.parent anchor) |- +(#1,#2) |- (.child anchor)\forestoption{edge label};
}
},
my shading/.style={
for tree={
text/.wrap pgfmath arg={black!##1!#1}{10*level()},
edge/.wrap pgfmath arg={->, draw=black!##1!#1}{10*level()},
},
},
}
\begin{forest}
for tree={
edge=->,
grow=east,
align=left,
child anchor=west,
edge path={
\noexpand\path [draw, \forestoption{edge}] (!u.parent anchor) |- (.child anchor)\forestoption{edge label};
},
font=\sffamily
}
[text1length1
[textlength1\\text2, my shading=blue
[text1lenght2, my shading=green
]
[asdsdsd, my shading=blue!50!green
[asdasdsd, stepwise={30pt}{-20pt}
[text1leng
[text1lenght2]
[asdasdsd [text1leng [text1lengAcid]]]
]
[text1leng [text1lengAcid]]
] %asdasdsd
[asdEERER
[text1lenght2]
[asdasdsd [text1leng [text1lengAcid]]]
]
[text1lenght2]
] %asdsdsd
[aASDASD
[text1leng [text1lengAcid]
[ASDERESSD
[text1lenght2]]
[asdsdsd
[text1lenght2]
[asdEERER
[text1lenght2]
[asdasdsd [text1leng [text1lengAcid]]]
]
[asdasdsd
[text1leng ][text1lenght2]
[text1leng [text1lengAcid]]
]
]
[aASDASD
[text1leng [text1lengAcid]]
[ASDERESSD
[text1lenght2]
[asdsdsd
[text1lenght2]
[asdEERER [text1lenght2]]
]
]
]
]
]
]
[HelloWorld111, my shading=purple
[HelloWorld333]
[text1leng [text1lengAcid]]
]
[backPress, my shading=red
[text1lengAcid]
]
[Hello, my shading=magenta]
[World11333, my shading=orange
[HelloWorld333, stepwise={25pt}{-15pt}]
[Jango]
[text1leng [text1lengAcid]]
]
]
\end{forest}
\end{document}
답변2
사진을 더 잘 보이게 하기 위해 마침내 숲을 설치하는 방법을 알아냈습니다. StatMenu->Programs->MikTex->PackageManger에서 MikTex의 패키지 관리자를 열었습니다. 숲을 설치했어요. 설치 디렉터리에서 Forest.sty를 복사하여 현재 작업 디렉터리에 붙여넣었습니다. 숲을 사용하면 위의 다이어그램은 다음과 같습니다.
암호:
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{forest}
\begin{document}
\tikzset{>=latex}
\resizebox{0.8\textwidth}{!}{%
\begin{forest} for tree={align=center,edge=->,grow=east}
[text1length1
[textlength1\\text2
[text1lenght2 ]
[asdsdsd
[asdasdsd
[text1leng
[text1lenght2 ]
[asdasdsd [text1leng [text1lengAcid ] ] ]
]
[text1leng [text1lengAcid ]]
] %asdasdsd
[asdEERER
[text1lenght2 ]
[asdasdsd [text1leng [text1lengAcid ] ] ]
]
[text1lenght2 ]
] %asdsdsd
[aASDASD
[text1leng [text1lengAcid ]
[ASDERESSD
[text1lenght2 ]]
[asdsdsd
[text1lenght2 ]
[asdEERER
[text1lenght2 ]
[asdasdsd [text1leng [text1lengAcid ] ] ]
]
[asdasdsd
[text1leng ][text1lenght2 ]
[text1leng [text1lengAcid ] ]
]
]
[aASDASD
[text1leng [text1lengAcid ] ]
[ASDERESSD
[text1lenght2 ]
[asdsdsd
[text1lenght2 ]
[asdEERER [text1lenght2 ] ]
]
]
]
]
]
]
[HelloWorld111
[HelloWorld333 ]
[text1leng [text1lengAcid ] ]
]
[backPress
[text1lengAcid ]
]
[Hello ]
[World11333
[HelloWorld333 ]
[Jango ]
[text1leng [text1lengAcid ] ]
]
]
\end{forest}
}
\end{document}
그림: