在論壇中,我發現了這個設計精美的里程碑/時間軸圖形: 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}