
我有一個關於甘特包裹:
對於一篇論文,我需要能夠繪製這樣的圖表:
然而,根據我迄今為止所看到的說明pgfgantt
,我似乎不知道該怎麼做。到目前為止,我只得到了這樣的東西:
這是我的程式碼:
\begin{ganttchart}[
inline, % puts the label inside the bar
hgrid,
vgrid,
bar height=1
]{1}{10}
% P3
\ganttgroup[inline=false,group/.style={draw=none, fill=none}]{P3}{2,0}{25,0}
\ganttbar[bar/.append style={fill=green}]{$T1$}{1}{2}
\ganttbar{}{3}{4}
\ganttbar[bar/.append style={fill=orange}]{$T3$}{5}{7}
\ganttbar{}{8}{9}
\ganttbar[bar/.append style={fill=cyan}]{$T5$}{10}{10}
\\
% P2
\ganttgroup[inline=false,group/.style={draw=none, fill=none}]{P2}{2,0}{25,0}
\ganttbar[bar/.append style={fill=green}]{$T1$}{1}{2}
\ganttbar{}{3}{4}
\ganttbar{}{3}{4}
\ganttbar{}{5}{7}
\ganttbar[bar/.append style={fill=yellow}]{$T4$}{8}{9}
\ganttbar[bar/.append style={fill=cyan}]{$T5$}{10}{10}
\\
% P1
\ganttgroup[inline=false,group/.style={draw=none, fill=none}]{P1}{2,0}{25,0}
\ganttbar{}{1}{4}
\ganttbar[bar/.append style={fill=orange}]{$T3$}{5}{7}
\ganttbar[bar/.append style={fill=yellow}]{$T4$}{8}{9}
\ganttbar{}{10}{10}
%
\end{ganttchart}
所以我的問題是:如何在多個處理器(P_x)上執行任務並使其看起來像是屬於在一起(刪除黑色邊框,僅一種符號等)?
答案1
我希望你不介意我提出一個替代方案。如果您已經熟悉該pgfplots
包,那麼使用該套件pgfgantt
可能是一個簡單的選擇,而不必過多地處理pgfgantt
程式碼。
area plot
這是使用手冊第 4.5.10 節中所述的範例pgflots
。
按以下順序指定\addplot
座標:{(south west) (north west) (north east) (south east)}
環境的整體設定axis
已經增長了一點(我覺得通常會發生這種情況pgfplots
)。如果您對具體設定有任何疑問,我很樂意在評論中回答。
結果:
代碼:
\documentclass{standalone}
\usepackage{pgfplots}
\usetikzlibrary{intersections}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
font=\footnotesize,
ytick style={draw=none},
xtick style={draw=none},
unit vector ratio*=1 1 1,
axis lines = middle,
enlarge x limits = {value=.1,upper},
enlarge y limits = {value=.05,upper},
ylabel={processors},
xlabel={time},
ylabel near ticks,
xlabel near ticks,
const plot,
stack plots=false,
area style,
ytick={1,...,11},
yticklabels={},
xtick={1,...,4},
extra y ticks={3,5,6,8,10,11},
extra y tick style={yticklabel={$P_{\pgfmathprintnumber{\tick}}$}}
]
\addplot[fill=yellow] coordinates {(0,0) (0,3) (3,3) (3,0) } node at (current path bounding box.center) {T4};
\addplot[fill=orange] coordinates {(0,3) (0,5) (2,5) (2,3)} node at (current path bounding box.center) {T3};
\addplot[fill=red!20] coordinates {(2,3) (2,5) (3,5) (3,3)} node at (current path bounding box.center) {T7};
\addplot[fill=gray] coordinates {(3,0) (3,8) (4,8) (4,0)} node at (current path bounding box.center) {T9};
\addplot[fill=teal] coordinates {(0,5) (0,11) (1,11) (1,5)} node at (current path bounding box.center) {T5};
\addplot[fill=yellow!60!black] coordinates {(1,5) (3,5) (3,6) (1,6)} node at (current path bounding box.center) {T8};
\addplot[fill=red!20] coordinates {(2,6) (2,8) (3,8) (3,6)} node at (current path bounding box.center) {T7};
\addplot[fill=blue!20] coordinates {(1,6) (1,10) (2,10) (2,6)} node at (current path bounding box.center) {T6};
\addplot[fill=magenta] coordinates {(2,8) (2,10) (4,10) (4,8)} node at (current path bounding box.center) {T2};
\addplot[fill=green!20] coordinates {(1,10) (1,11) (4,11) (4,10)} node at (current path bounding box.center) {T1};
\end{axis}
\end{tikzpicture}
\end{document}