Tengo un dato con todos los valores numéricos. ¿Cómo podría trazar una combinación de gráficos de barras apilados mixtos y uno al lado del otro en el generador de gráficos? Quiero trazar mis gráficos como se muestra en las 2 imágenes adjuntas.
La primera imagen solo muestra el porcentaje de cada variable en un gráfico de barras apiladas y una al lado de la otra, pero en la segunda imagen también se muestra el valor de la variable.
Si puede compartir el procedimiento detallado o el script JSL, sería de gran ayuda.
A continuación se muestran los datos de muestra.
| Alumno |
Matemáticas_totales_física |
Matemáticas |
Física |
Total_Badminton_Fútbol |
Bádminton |
Fútbol americano |
| A |
50 |
30 |
20 |
40 |
10 |
30 |
| B |
40 |
25 |
15 |
20 |
10 |
10 |
| C |
30 |
15 |
15 |
50 |
40 |
10 |
Gracias 


Hola @Rajat
Creo que podemos acercarnos bastante a lo que quieres con solo un poco de trabajo:
Adjunto la tabla de datos reestructurados con el script guardado para que puedas buscar por ti mismo. Esto es lo que hice:
1. Apila tu mesa original:
Current Data Table() << Stack(
columns( :Maths, :Physics, :Badminton, :Football ),
Source Label Column( "Label" ), Stacked Data Column( "Data" )
);

Esto da lo siguiente:
2. Necesitamos una variable que nos permita dividir la agrupación de actividades (matemáticas/física frente a bádminton/fútbol), así que agregaré una nueva columna, Grupo, e iteraré AABBAABB, etc. Puede hacerlo de la forma que desee. como, solo necesitas una variable nominal. Aquí hay otra forma con Sequence():
New Column("Group", Numeric, "Nominal", Formula(Sequence(1, 2, 1, 2)) );

3. Creador de gráficos:
Ajusté una serie de configuraciones para que el gráfico se vea como lo hice, pero aquí están los pasos básicos y un breve video:
Pasos:
- Arrastre la columna "Datos" al rol Y
- Arrastre ambas columnas "Total", al mismo tiempo, a la parte superior de la zona de colocación Y
- Desactive los puntos y active el elemento Barra
- Cambie el estilo de barra para el gráfico inferior, "Datos", a "Apilado"
- Arrastre "Etiqueta" al rol de superposición
- Debajo de los controles de las barras superiores, desactive la función de superposición en "Variables"
- Arrastre "Grupo" al rol del eje X
- Desactive la variable "Grupo" para la trama superior en el panel de control
- Arrastre "Estudiante" al rol del Grupo X
- Cambie "Estadística de resumen" para el gráfico inferior a "% de factor" (me olvidé de mostrar esto en el video)
- Cambie la etiqueta a "Etiqueta por valor" para cada barra
Esto da:
Desde aquí puedes hacer mucho. Para el gráfico final que mostré al principio, también hice algunas adiciones como cambiar los anchos de las barras (haga clic con el botón derecho en un gráfico> personalizar), eliminé las etiquetas del eje X (doble clic en el eje y desmarque las etiquetas) y también cambié el Espaciado del gráfico ( Triángulo rojo > Espaciado de gráficos). Aquí hay un script para el gráfico final:
Graph Builder(
Size( 799, 566 ),
Show Control Panel( 0 ),
Graph Spacing( 2 ),
Variables(
X( :Group ),
Y( :Total_Math_Physics ),
Y( :Total_Badminton_Football, Position( 1 ) ),
Y( :Data ),
Group X( :Student ),
Overlay( :Label )
),
Elements(
Position( 1, 1 ),
Bar( Y( 1 ), Y( 2 ), Overlay( 0 ), Legend( 5 ), Label( "Label by Value" ) )
),
Elements(
Position( 1, 2 ),
Bar(
X,
Y,
Legend( 4 ),
Bar Style( "Stacked" ),
Summary Statistic( "% of Factor" ),
Label( "Label by Value" )
)
),
SendToReport(
Dispatch(
{},
"Group",
ScaleBox,
{Min( -1.167069008972 ), Max( 2.147362067225 ), Inc( 1 ),
Minor Ticks( 0 ), Label Row( Show Major Labels( 0 ) )}
),
Dispatch(
{},
"Total_Math_Physics",
ScaleBox,
{Min( 0.23109243697479 ), Max( 55 ), Inc( 10 ), Minor Ticks( 1 )}
),
Dispatch(
{},
"Data",
ScaleBox,
{Min( 0 ), Max( 1.1209749344709 ), Inc( 0.2 ), Minor Ticks( 0 )}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "Example" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "" )} ),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 2 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 3 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 4 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 5 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 6 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
)
)
);
¡Espero que esto ayude!
@Julian
Hola @Rajat
su pregunta es buena, pero no creo que JMP pueda hacer esto sobre la marcha.
vea adjunto mi archivo con los scripts para producir la salida. mi enfoque es más una solución de baja tecnología. He agregado columnas para calcular las acciones de cada sujeto y filas (falsas) para permitir el efecto de lado a lado. Una vez hecho esto, modifiqué algunas cosas en las propiedades del gráfico para completar la ilusión.
por favor, háganos saber si esto es en la dirección correcta.
Ron
