¿Hay alguna forma de variar los colores de relleno del gráfico de barras en función de otra variable?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Saludos.
Estoy tratando de crear un diagrama de Gantt donde un programa puede tener diferentes colores de relleno dentro de los segmentos según los criterios. Inventé algunos datos ficticios solo con fines de discusión y adjunté un ejemplo visual. Digamos que tenemos tres proyectos con necesidades de personal variables a lo largo del tiempo (diferentes tiempos por proyecto) y me gustaría que los colores de relleno de la barra representen la información de personal bajo, medio o alto.
| Encabezado 1 | Hora 1 | Dotación de personal 1 | tiempo 2 | Dotación de personal 2 | Tiempo 3 | Dotación de personal 3 |
|---|
| Proyecto 1 | ene-feb | Bajo | mar-ago | Alto | septiembre-diciembre | Medicina |
| Proyecto 2 | enero-junio | Medicina | julio-octubre | Bajo | noviembre-diciembre | Medicina |
| Proyecto 3 | Ene-Abr | Medicina | mayo-julio | Medicina | julio-diciembre | Alto |
Encontré y jugué con el complemento del diagrama de Gantt, pero no es adecuado para mis necesidades, aunque lo usé como punto de partida para usar Graph Builder para hacer algo para mí. Lo tengo funcionando, así que puedo usar fechas para crear diferentes barras para un proyecto en particular según el tiempo. Pero en este momento, el color de relleno es una función del período de tiempo, por lo que todo el Tiempo 1 es el mismo, todo el Tiempo 2 es el mismo y todo el Tiempo 3 es el mismo.
¿Puedo usar declaraciones condicionales en las propiedades del modelo de leyenda para el color de relleno? Con 1,2,3 siendo Bajo, Medio, Alto respectivamente y la referencia del Modelo 5 está vinculada a los límites del Tiempo 1, esencialmente algo así como...
Legend Model( 5, Level Name( 0, "Time 1" ), Properties( 0, if (Staffing 1 = 1,{Fill Color( 57 )}, Staffing 1 = 2, {Fill Color( 47)}, Staffing 1 = 3, {Fill Color( 37)}, ) )Idealmente, también me gustaría agregar marcadores para hitos, pero no sé si eso es factible. Hay otras herramientas que probablemente puedan hacer esto más fácilmente, pero alguien preguntó acerca de JMP después de mostrarles un ejemplo de Excel, así que aquí estoy.
Gracias.
Re: ¿Hay alguna forma de variar los colores de relleno del gráfico de barras en función de otra variable?Gracias por tu ayuda Jim.
Veré si puedo hacer JSL con algunas cosas para que funcione.
Re: ¿Hay alguna forma de variar los colores de relleno del gráfico de barras en función de otra variable?La ilustración que le di mostraba cómo, usando el complemento de Gantt, la tabla de datos final tendría que verse aproximadamente para generar un gráfico de la complejidad que desea.Si respalda eso, a cómo se vería la tabla inicial, puedo imaginar una tabla de datos con columnas que indiquen las especificaciones que desea, y luego para que el jsl tome esa entrada y genere detrás de escena una tabla de datos y un script de creación de gráficos para generar su salida.
No creo que haya una solución en la que tenga una tabla de datos junto con un script de Graph Builder estático para producir los resultados deseados.Tomará algo de jsl para interpretar su entrada y generar una nueva tabla de datos y una secuencia de comandos Graph Builder para satisfacer sus necesidades.
Re: ¿Hay alguna forma de variar los colores de relleno del gráfico de barras en función de otra variable?Jim,
Gracias por responder. Ya tengo algo funcionando en ese sentido.
Mi problema es un poco diferente. Entonces, usando el ejemplo de Gantt, quería variar, digamos, el color de relleno completo en función de otra columna. Básicamente, tengo una columna que define el tamaño de las barras en función del tiempo y otra que define el color. Entonces, el azul oscuro para completo sería impulsado por otros datos, podría ser algo así como los niveles de personal, donde los requisitos podrían ser verdes, el diseño podría ser amarillo y rojo para las secciones completa e incompleta, etc. Ese es el problema que tengo.
Gracias.
Re: ¿Hay alguna forma de variar los colores de relleno del gráfico de barras en función de otra variable?La respuesta simple es Sí:

Sin embargo, hace que Graph Builder y la tabla de datos sean más complejos.Si usa el complemento de diagrama de Gantt como modelo de estructuras, deberá agregar una nueva columna para contener los nuevos datos finales para cada tipo diferente de patrón de relleno que desee.Y luego, el gráfico de Graph Builder tendría que modificarse para agregar una nueva barra con el rango establecido para la columna de inicio correcta en la nueva columna en la tabla de datos que se creó para la nueva categoría.A continuación se muestra el código para el generador de gráficos con solo un nuevo tipo de patrón de relleno.Cambié el patrón de relleno, pero podría haber sido un patrón sólido con un color diferente.
Graph Builder(
Size( 907, 626 ),
Show Control Panel( 0 ),
Variables(
X( :Start Date ),
X( :donedate, Position( 1 ) ),
X( :End Date, Position( 1 ) ),
X( :Extended Date, Position( 1 ) ),
Y( :Task, Order By( :Start Date, Descending, Order Statistic( "Mean" ) ) )
),
Elements(
Bar( X( 1 ), X( 3 ), Y, Legend( 32 ), Bar Style( "Range" ) ),
Bar( X( 1 ), X( 2 ), Y, Legend( 20 ), Bar Style( "Range" ) ),
Bar( X( 1 ), X( 4 ), Y, Legend( 44 ), Bar Style( "Range" ) )
),
SendToReport(
Dispatch(
{},
"Start Date",
ScaleBox,
{Min( 3442521600 ), Max( 3487017600 ), Interval( "Month" ), Inc( 1 ),
Minor Ticks( 0 ), Label Row( Label Orientation( "Angled" ) )}
),
Dispatch(
{},
"Task",
ScaleBox,
{Label Row(
{Show Major Ticks( 0 ), Set Font( "Tahoma" ), Set Font Size( 11 )}
)}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
32,
Level Name( 0, "Incomplete" ),
Properties( 0, {Fill Color( 77 )} )
), Legend Model(
20,
Level Name( 0, "Complete" ),
Properties( 0, {Fill Color( 53 )} )
), Legend Model(
44,
Properties( 0, {Fill Color( 74 ), Fill Pattern( "hatch heavy" )} )
)}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "Gantt Chart" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "Date" )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "Tasks" )} )
)
);
Y esta es la tabla de datos con la modificación que tuve que hacer para permitir la nueva categoría de barra.Observe la nueva columna llamada Fecha extendida.En el modelo que propongo, habría que agregar columnas adicionales como Fecha extendida.
