如何旋转图表内的文本,如下所示。以下是我从以下修改的 MWE这里
\documentclass[tikz,12pt]{standalone}
\usetikzlibrary{calc,positioning,backgrounds,arrows.meta}
\usepackage{forest}
\pagestyle{empty}
\begin{document}
\begin{forest}
for tree={
child anchor=west,
parent anchor=east,
grow'=east,
draw,
anchor=west,
edge path={
\noexpand\path[\forestoption{edge}]
(.child anchor) -| +(-5pt,0) -- +(-5pt,0) |-
(!u.parent anchor)\forestoption{edge label};
},
}
[Root
[Branch A
[Branch A1
]
[Branch A2
]
]
[Branch B
[Branch B1
]
[Branch B2
]
]
]
\end{forest}
\end{document}
目标:如下图所示旋转
答案1
最简单的解决方案是使用edges
库。rotate
节点选项会自动工作 - 无需更改或指定任何锚点。
\documentclass[border=10pt]{standalone}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
for tree={
draw,
grow'=0,
},
forked edges,
where n children=0{}{rotate=90},
[Root
[Branch A
[Branch A1
]
[Branch A2
]
]
[Branch B
[Branch B1
]
[Branch B2
]
]
]
\end{forest}
\end{document}
如果您确实需要指定锚点(节点、父节点或子节点),请尽量避免使用绝对锚点(例如west
或north
),而应使用相对锚点(例如parent
或child
),因为如果特定节点发生旋转,这些锚点会得到正确调整。也就是说,如果您将这些锚点用于树,则可以旋转节点而不必担心它们。同样,如果生长方向发生变化,相对锚点也会自动调整。因此,以这种方式编写的代码比依赖绝对锚点的代码灵活得多。
答案2
您可以通过在逗号后附加选项来为每个节点指定选项。为了旋转节点,您可以使用选项rotate
。但是,您还需要更改child anchor
和parent anchor
(边缘连接的位置),因为它们也会旋转,并且您可能需要anchor=center
垂直对齐。为了简化操作,我将它们组合成一种新样式ver
。
另外,我已将您的简化-| +(-5pt,0) -- +(-5pt,0)
为-- +(-10pt,0)
。
\documentclass[12pt]{standalone}
\usepackage{forest}
\begin{document}
\begin{forest}
for tree={
child anchor=west,
parent anchor=east,
grow'=east,
draw,
anchor=west,
edge path={
\noexpand \path[\forestoption{edge}]
(.child anchor)
-- +(-10pt,0)
|- (!u.parent anchor)
\forestoption{edge label};
},
ver/.style={rotate=90, child anchor=north, parent anchor=south, anchor=center},
}
[Root
[Branch A, ver
[Branch A1
]
[Branch A2
]
]
[Branch B, ver
[Branch B1
]
[Branch B2
]
]
]
\end{forest}
\end{document}