
Ich habe eine kurze Frage zumAbonnierenPaket:
Für eine Arbeit muss ich in der Lage sein, Diagramme wie dieses zu zeichnen:
Mit den Anleitungen, pgfgantt
die ich bisher gesehen habe, kann ich jedoch nicht herausfinden, wie das geht. Bisher habe ich nur so etwas hinbekommen:
Hier ist mein Code:
\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}
Daher meine Frage: Wie kann ich Tasks auf mehreren Prozessoren (P_x) verteilen und dabei den Eindruck erwecken, dass sie zusammengehören (schwarzen Rand entfernen, nur eine Notation etc.)?
Antwort1
Ich hoffe, Sie haben nichts dagegen, wenn ich eine Alternative anbiete. Wenn Sie bereits mit dem pgfplots
Paket vertraut sind, ist die Verwendung dieses Pakets anstelle von pgfgantt
möglicherweise eine einfache Option, ohne zu viel am pgfgantt
Code herumbasteln zu müssen.
Dies ist ein Beispiel, das area plot
in Abschnitt 4.5.10 des pgflots
Handbuchs beschrieben wird.
Die \addplot
Koordinaten werden in dieser Reihenfolge angegeben:{(south west) (north west) (north east) (south east)}
Die allgemeinen Einstellungen für die axis
Umgebung sind etwas gewachsen (was meiner Meinung nach bei normalerweise der Fall ist pgfplots
). Wenn Sie Fragen zu bestimmten Einstellungen haben, beantworte ich diese gerne in den Kommentaren.
Ergebnis:
Code:
\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}