在论坛中我发现了这个设计精美的里程碑/时间线图形: TikZ 中的里程碑图形
关于这个图我想做两处修改:
我如何调整代码以设置圆形(矩形)的垂直位置?
如何调整代码以设置矩形的水平和垂直尺寸?
我的目标是在时间线上设置多个条形图,有点像甘特图。
非常感谢您的帮助!
\documentclass{standalone}
\usepackage{datatool}
\usepackage{tikz}
\usetikzlibrary{shadows}
\usetikzlibrary{positioning}
%\usetikzlibrary{calc,intersections}
\usepackage{filecontents}
\begin{filecontents*}{tasks.dat}
phase,taskid,name,position,size
initial,initial,Decision to vote shares,2,8
softblocking,softblocking,Soft Blocking,9,8
afterAGM,afterAGM,No blocking,17,8
\end{filecontents*}
\DTLloaddb[noheader=false]{tasks}{tasks.dat}
\begin{document}
\begin{tikzpicture}[week/.style={font=\bfseries, text=white},
initial/.style={fill=yellow,rectangle,opacity=0.5},
softblocking/.style={fill=red!60,rectangle,opacity=0.5},
afterAGM/.style={fill=green,rectangle,opacity=0.5} ]
% Tasks Headers
\DTLforeach*{tasks}{\phase=phase, \taskid=taskid, \name=name, \position=position,\size=size}{\node(\taskid)[\phase, minimum size=\size em] at (\position, 0) {};
\draw (node cs:name=\taskid, anchor=north) to ++(0,1) node[above, scale=\size/6] {\name};
}
% Timeline Bar
\filldraw[fill=black, draw=white,line width=0.5ex,opacity=0.75] (0,-0.5) rectangle (20,0.5);
% Weeks.
\node[week] at (2,0) {Announcement};
\node[week] at (5,0) {TRD -6};
\node[week] at (9,0) {TRD -4};
\node[week] at (13,0) {TRD, AGM -7};
\node[week] at (17,0) {AGM};
\end{tikzpicture}
\end{document}
答案1
我不太确定你想要这个是什么样子。可能不是这样的,但这是我从你的描述中得到的!(或者更多像这样?但请注意,这是我画的,所以有点奇怪。)
顺便说一句,您应该考虑使用 Claudio Fiandrino 的timeline
图书馆。
\documentclass[tikz,border=5pt]{standalone}
\usepackage{datatool}
\usetikzlibrary{shadows,positioning}
\usepackage{filecontents}
\begin{filecontents*}{tasks.dat}
phase,taskid,name,xposition,yposition,width,height
initial,initial,Decision to vote shares,2,5,8,10
softblocking,softblocking,Soft Blocking,9,0,8,24
afterAGM,afterAGM,No blocking,17,-6,8,2
\end{filecontents*}
\DTLloaddb[noheader=false]{tasks}{tasks.dat}
\begin{document}
\begin{tikzpicture}[week/.style={font=\bfseries, text=white},
initial/.style={fill=yellow,rectangle,opacity=0.5},
softblocking/.style={fill=red!60,rectangle,opacity=0.5},
afterAGM/.style={fill=green,rectangle,opacity=0.5} ]
% Tasks Headers
\DTLforeach*{tasks}{\phase=phase, \taskid=taskid, \name=name, \xposition=xposition, \yposition=yposition, \mywidth=width, \myheight=height}{\node(\taskid)[\phase, minimum width=\mywidth em, minimum height=\myheight mm] at (\xposition, \yposition) {};
\draw (node cs:name=\taskid, anchor=north) to ++(0,1) node[above, scale=\mywidth/6] {\name};
}
% Timeline Bar
\filldraw[fill=black, draw=white,line width=0.5ex,opacity=0.75] (0,-0.5) rectangle (20,0.5);
% Weeks.
\node[week] at (2,0) {Announcement};
\node[week] at (5,0) {TRD -6};
\node[week] at (9,0) {TRD -4};
\node[week] at (13,0) {TRD, AGM -7};
\node[week] at (17,0) {AGM};
\end{tikzpicture}
\end{document}