甘特图条形标签的对齐方式

甘特图条形标签的对齐方式

标签\ganttbarpgfgantt默认为右对齐(在图表边界)。是否可以将其左对齐?

答案1

如果问题是关于标签文本对齐,那么您可以使用坐标交叉点,如下所示:

\documentclass{article}
\usepackage{tikz,pgfgantt}
\begin{document}
\begin{tikzpicture}[node distance=0cm]
\node[align=center] at (-4,0) (o) {This is\\ adjust node}; %Remove the text later or change it to a \coordinate
\begin{ganttchart}[vgrid, hgrid, bar label font=\Large,bar label text={--#1$\rightarrow$}]{12}
    \gantttitle{Title}{12} \\
    \ganttbar[name=b1,bar label anchor/.style={draw,right = of o|-b1}]{Task 1}{1}{3} \\
    \ganttbar[name=b2,bar label anchor/.style={draw,right = of o|-b2},bar label font=\color{orange}]{Task 2}{4}{10} \\
    \ganttbar[name=b3,bar label anchor/.style={draw,right = of o|-b3},bar label font=\MakeUppercase]{Final task}{11}{12}
\end{ganttchart}
    \node[fill,circle,inner sep=2pt] at (b1) {}; %This line is for demo
    \draw[dashed] (o) |- (b1); % This too!
\end{tikzpicture}
\end{document}

这将使

在此处输入图片描述

从图中可以看出,我们首先提供一个调整节点。由于图表的西北点是原点,因此我们只需从放置节点的原点向左移动即可(o)。然后我们取此点与条形中心的正交交点(用黑点表示),交点用虚线表示。我们将条形标签的左侧放在这些交点处,因此它们变为左对齐。为了能够引用每个条形标签,我们需要提供一些名称,如代码所示。

请注意,我将其放置node distance=0cm到没有额外填充的点,否则标签将与此键指示的距离一样远。此外,我将选项放在draw锚样式键上,看看它是否正常工作,是否可以稍后简单地删除。

答案2

另一种左对齐条形标签的方法是使用align=left, text width=<some value>,其中<some value>应该足够大以容纳最宽的标签。这种方法的优点是您不需要为每个条形调整选项;您只需向环境提供一次键ganttchart

(基于 percusse 的 MWE)

\documentclass{article}
\usepackage{pgfgantt}
\begin{document}
\begin{ganttchart}[
    vgrid,
    hgrid,
    bar label font=\Large,
    bar label text={--#1$\rightarrow$},
    bar label anchor/.append style={align=left, text width=8em}
]{12}
    \gantttitle{Title}{12} \\
    \ganttbar{Task 1}{1}{3} \\
    \ganttbar[bar label font=\color{orange}]{Task 2}{4}{10} \\
    \ganttbar[bar label font=\MakeUppercase]{Final task}{11}{12}
\end{ganttchart}
\end{document}

答案3

pgfgantt 的文档提供了几个示例。下面给出其中一个。任务 1 居中(默认),任务 3 右对齐。

相关键是bar label inline anchor/.style

\documentclass{standalone}
\usepackage{pgfgantt}

\begin{document}
\begin{ganttchart}[vgrid, hgrid, inline]{12}
\gantttitle{Title}{12} \\
\ganttbar{Task 1}{1}{3}
\ganttbar[bar label inline anchor/.style=above]{Task 2}{5}{10} \\
\ganttbar[bar label shape anchor=left,%
bar label inline anchor/.style=right]{Task 3}{2}{7}
\ganttbar[inline=false]{Final task}{11}{12}
\end{ganttchart}
\end{document}

在此处输入图片描述

相关内容