¿Cómo dibujar diagramas de Gantt multiprocesador usando pgfgantt?

¿Cómo dibujar diagramas de Gantt multiprocesador usando pgfgantt?

Tengo una pregunta rápida sobre elpgfganttpaquete:

Para un artículo necesito poder dibujar gráficos como este:

ingrese la descripción de la imagen aquí

Sin embargo, con las instrucciones pgfganttque he visto hasta ahora, parece que no puedo entender cómo hacerlo. Hasta ahora sólo logré obtener algo como esto:

ingrese la descripción de la imagen aquí

Aquí está mi código:

\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}

Entonces mi pregunta es: ¿Cómo puedo realizar tareas en múltiples procesadores (P_x) y hacer que parezca que van juntos (eliminar el borde negro, solo una notación, etc.)?

Respuesta1

Espero que no te importe que mencione una alternativa. Si ya está familiarizado con el pgfplotspaquete, usar este paquete en lugar de pgfganttpodría ser una opción fácil sin tener que complicarse demasiado con el pgfganttcódigo.

Este es un ejemplo que utiliza lo area plotdescrito en la Sección 4.5.10 del pgflotsmanual.

El \addplotespecifica las coordenadas en este orden:{(south west) (north west) (north east) (south east)}

La configuración general del axisentorno ha crecido un poco (como creo que suele pasar con pgfplots). Si tiene alguna pregunta sobre configuraciones específicas, estaré encantado de responderla en los comentarios.

Resultado:

Nuevo Gantt

Código:

\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}

información relacionada