![如何在 pgfganttchart 中获取对象坐标?](https://linux22.com/image/471771/%E5%A6%82%E4%BD%95%E5%9C%A8%20pgfganttchart%20%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%AF%B9%E8%B1%A1%E5%9D%90%E6%A0%87%EF%BC%9F.png)
这个问题甘特图 - 列和行未对齐在甘特图中显示了一些未对齐的行。
在我看来,该包pgfgantt
本身并没有提供所需的结果。但是,隔离所需的更改,可以通过将更复杂的 Tikz 对象放置在元素的左侧来引入这些更改\ganttbar
。(问题)但是,我没有找到如何分配或检索坐标,例如从放置的\ganttbar
元素中。
作为示例,下面的代码取自 pgfgantt 手册,经过修改和调整以演示我的问题。
例如,不可能做某事,例如:
\ganttbar{Task 1}{1}{2} (A) \\
...
\node[green] at (A) {hi};
虽然可以将放置\node
在绝对(甚至是猜测)坐标中,但请参见下面的蓝色文本。
我尝试使用特殊节点,bounding box
但收效甚微。它没有显示蓝色甘特图的坐标,而是显示其他东西。
左侧用来记录任务名称的标签节点是否可以被替换、覆盖或访问?(此处为手动放置的蓝色文本,因此留空。)
\documentclass[10pt,border=3mm]{standalone}
\usepackage{pgfgantt}
\begin{document}
\begin{ganttchart}{1}{12}
\gantttitle{2011}{12} \\
\gantttitlelist{1,...,12}{1} \\
\ganttbar{Task 1}{1}{2} \\
{
\ganttbar[
bar/.append style={draw=blue,fill=blue!20}
]{}{8}{12}
[local bounding box=inner box]
\node[red] (inner box.east) {hi world};
}
\node[green] at (0,-1) {hi};
\node[blue,anchor=east] at (0,-3.5) {show more complex things here};
\end{ganttchart}
\end{document}
答案1
您可以使用name
键将节点名称设置为特定的\ganttbar
:
\documentclass[border=10pt]{standalone}
\usepackage{pgfgantt}
\begin{document}
\begin{ganttchart}{1}{12}
\gantttitle{2011}{12} \\
\gantttitlelist{1,...,12}{1} \\
\ganttbar{Task 1}{1}{2} \\
\ganttbar[
bar/.append style={
draw=blue,
fill=blue!20,
},
name=foo
]{}{8}{12}
\node[red, anchor=south] at (foo.north) {hi world};
\node[green] at (foo) {hi};
\node[blue, anchor=east] at (0,-3.5) {show more complex things here};
\end{ganttchart}
\end{document}