如何构建一个包含 2017 年 12 个月和 2018 年 12 个月的甘特图。想法是从 2017 年开始添加任务,一直到 2018 年。
也许 24 个月是理想的,但我期待提供帮助。
先感谢您
\documentclass[tikz]{standalone}
\usepackage{pgfgantt}
\title{Gantt Charts with the pgfgantt Package}
\begin{document}
%
% A fairly complicated example from section 2.9 of the package
% documentation. This reproduces an example from Wikipedia:
% http://en.wikipedia.org/wiki/Gantt_chart
%
\definecolor{barblue}{RGB}{153,204,254}
\definecolor{groupblue}{RGB}{51,102,254}
\definecolor{linkred}{RGB}{165,0,33}
\renewcommand\sfdefault{phv}
\renewcommand\mddefault{mc}
\renewcommand\bfdefault{bc}
\setganttlinklabel{s-s}{START-TO-START}
\setganttlinklabel{f-s}{FINISH-TO-START}
\setganttlinklabel{f-f}{FINISH-TO-FINISH}
\sffamily
\begin{ganttchart}[
canvas/.append style={fill=none, draw=black!5, line width=.75pt},
hgrid style/.style={draw=black!5, line width=.75pt},
vgrid={*1{draw=black!5, line width=.75pt}},
today=7,
today rule/.style={
draw=black!64,
dash pattern=on 3.5pt off 4.5pt,
line width=1.5pt
},
today label font=\small\bfseries,
title/.style={draw=none, fill=none},
title label font=\bfseries\footnotesize,
title label node/.append style={below=7pt},
include title in canvas=false,
bar label font=\mdseries\small\color{black!70},
bar label node/.append style={left=2cm},
bar/.append style={draw=none, fill=black!63},
bar incomplete/.append style={fill=barblue},
bar progress label font=\mdseries\footnotesize\color{black!70},
group incomplete/.append style={fill=groupblue},
group left shift=0,
group right shift=0,
group height=.5,
group peaks tip position=0,
group label node/.append style={left=.6cm},
group progress label font=\bfseries\small,
link/.style={-latex, line width=1.5pt, linkred},
link label font=\scriptsize\bfseries,
link label node/.append style={below left=-2pt and 0pt}
]{1}{13}
\gantttitle[
title label node/.append style={below left=7pt and -3pt}
]{WEEKS:\quad1}{1}
\gantttitlelist{2,...,20}{1} \\
\ganttgroup[progress=57]{WBS 1 Summary Element 1}{1}{10} \\
\ganttbar[
progress=75,
name=WBS1A
]{\textbf{WBS 1.1} Activity A}{1}{8} \\
\ganttbar[
progress=67,
name=WBS1B
]{\textbf{WBS 1.2} Activity B}{1}{3} \\
\ganttbar[
progress=50,
name=WBS1C
]{\textbf{WBS 1.3} Activity C}{4}{10} \\
\ganttbar[
progress=0,
name=WBS1D
]{\textbf{WBS 1.4} Activity D}{4}{10} \\[grid]
\ganttgroup[progress=0]{WBS 2 Summary Element 2}{4}{10} \\
\ganttbar[progress=0]{\textbf{WBS 2.1} Activity E}{4}{5} \\
\ganttbar[progress=0]{\textbf{WBS 2.2} Activity F}{6}{8} \\
\ganttbar[progress=0]{\textbf{WBS 2.3} Activity G}{9}{10}
\ganttlink[link type=s-s]{WBS1A}{WBS1B}
\ganttlink[link type=f-s]{WBS1B}{WBS1C}
\ganttlink[
link type=f-f,
link label node/.append style=left
]{WBS1C}{WBS1D}
\end{ganttchart}
\end{document}
答案1
在您给出的示例中,他们为网格定义了从 1 到 13 的网格范围(这是命令{1}{13}
之后\begin{ganttchart}
),从而有效地为您提供了结果中带有浅灰色边框的 13 个垂直条。
然后他们添加了ganttitlelist{2,...,20}{1}
之前定义的标题。
我认为更简单的方法是直接使用该ganttitlecalendar
方法并定义范围(例如 2017 年至 2018 年)。我建议从以下示例开始,我创建了从今天到明年(今天 - 2018 年 11 月 28 日)的甘特图,其中每个月代表一个“单位”:
\documentclass[tikz]{standalone}
\usepackage{pgfgantt}
\begin{document}
\begin{ganttchart}[
vgrid={*2{black}, *1{dashed}},
x unit=10mm,
y unit chart=9mm,
y unit title=12mm,
time slot format=isodate,
compress calendar=true
]{2017-11-29}{2018-11-28}
\gantttitlecalendar{year, month=shortname}\\
\end{ganttchart}
\end{document}
您可以尝试使用这些值来了解不同命令的作用。我将在此处的示例中解释这些命令:
vgrid
用于布局五垂直网格。在这里,我告诉它画 2 条黑线,然后画一条虚线。之后它将对所有垂直线重复此模式。x unit=10mm
是一个命令,我在其中指定每个单位(月份)水平距离(每条垂直线之间的距离,或每个'月值'在此示例中)的宽度为 10 毫米。y unit chart=9mm
这垂直距离单位(月)。将其设置为 1 毫米或 2 毫米,看看会发生什么!y unit title=12mm
将设置标题的高度,在本例中年份就是标题。time slot format=isodate
在使用实际日期时非常方便——我在自动生成甘特图时一直使用它。它允许您根据格式创建甘特图yyyy-mm-dd
,而不是“指定的单位数”(如您的示例中的{1}{13}
)compress calendar=true
在默认模式下,这是false
,这意味着甘特日历中的每个“单位”将是一天。显然,当甘特图跨越一年或多年时,这个数字可能会变得非常大(在这种情况下,我们将有 365 乘以 10 毫米)。将其设置为true
将使月份成为单位,从而有效地压缩日历。
在这些选项之后,甘特日历的范围就确定了。例如,我把今天设为到明年{2017-11-29}{2018-11-28}
。填写您选择的任何其他(iso 格式)日期进行实验。
然后我告诉您日历的显示方式。在此示例中,我想要年份和月份,但只显示前三个字母。省略这些字母,=shortname
看看会发生什么!您还可以添加星期、工作日或天。工作日还有一个简称选项(星期一、星期二……)。
我建议你掌握这些设置并尝试一下,因为它们可以有效地创建你的甘特图基础。然后就是用元素和链接填充它,但如果你仍然遇到问题,那就值得换一个问题了。我还会链接到我做出的另一个答案基于此小示例可为您的图表添加一些颜色。
祝你好运!