Hola,
1) Quiero saber cómo guardar dos gráficos en una diapositiva de ppt.
En este momento, mi script está guardando un gráfico por diapositiva en ppt.
Necesito comparar dos gráficos en una sola diapositiva. Además, genero como 100 gráficos para mis datos y tener 100 diapositivas en ppt hace que sea difícil de analizar.
2) ¿Cómo escalar mis gráficos individuales?
//******************Open Data table***********************//
dt = Open( "$Downloads\Measure - Subset of JA63025.10A_raw_para_Stacked.jmp" );
//************************ Create new Columns to segregate the test names to group and plot graphs ***********************//
dt << New Column( "Test Number (MSB of Label)",
Character,
Nominal,
Formula( Num( Substr( :Label, Contains( :Label, ":p" ) - Num( 10 ), Contains( :Label, ":p" ) - Num( 6 ) ) ) )
);
dt << New Column( "Test Description", Character, Nominal, Formula( Substr( :Label, Contains( :Label, ":NVM_" ) + Num( 5 ), 100 ) ) );
dt << New Column( "NVM Parameter Name",
Character,
Nominal,
Formula( Substitute/*###*/(Substr( :Label, Contains( :Label, ":NVM_" ) + Num( 5 ), 100 ), "[1]", "") )
);
dt << New Column( "Measurements.",
Character,
Nominal,
Formula(
If( 16600 <= :Name( "Test Number (MSB of Label)" ) <= 16603,
Substitute( :Test Description, "[1]", "_BiasA_Pre_refcell_Erase" ),
If( 16629 <= :Name( "Test Number (MSB of Label)" ) <= 16632,
Substitute( :Test Description, "[1]", "_BiasA_Post_refcell_Erase" )
)
)
)
);
dt << New Column( "Measurements..",
Character,
Nominal,
Formula( If( 10100 <= :Name( "Test Number (MSB of Label)" ) <= 10103, Substitute( :Test Description, "[1]", "" ) ) )
);
dt << New Column( "Measurements...",
Character,
Nominal,
Formula(
If( 10100 <= :Name( "Test Number (MSB of Label)" ) <= 10103,
Empty(),
If( 16600 <= :Name( "Test Number (MSB of Label)" ) <= 16603,
Empty(),
If( 16629 <= :Name( "Test Number (MSB of Label)" ) <= 16632,
Empty(),
Substitute( :Test Description, "[1]", "" )
)
)
)
)
);
//*******************Plot Variability Charts****************************//
dtsum = Current Data Table();
colnames = dtsum << get column names( character );
Show( colnames );
//nw = New Window( "Plots", myVLB = V List Box() );
New Window( "Graphs",
For( i = 23, i <= N Items( colnames ), i++, // We have change i value based on the column where our modified column to plot graphs starts
gb = Variability Chart(
invisible,
Y( :Data ),
Y Scale( Left, Right ),
X( Column( colnames[i] ) ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Vertical Charts( 0 ),
Variability Summary Report( 1 ),
Std Dev Chart( 0 ),
Mean of Std Dev( 0 ),
Show Box Plots( 1 ),
Mean Diamonds( 1 ),
By( :NVM Parameter Name ),
);
);
//myVLB << append( Report( gb ) );
);
//**********************************Save Script to Data Table ************************//
dt << New script(
"Plots",
For( i = 23, i <= N Items( colnames ), i++, // We have change i value based on the column where our modified column to plot graphs starts
Variability Chart(
//invisible,
Y( :Data ),
Y Scale( Left, Right ),
X( Column( colnames[i] ) ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Vertical Charts( 0 ),
Variability Summary Report( 1 ),
Std Dev Chart( 0 ),
Mean of Std Dev( 0 ),
Show Box Plots( 1 ),
Mean Diamonds( 1 ),
By( :NVM Parameter Name ),
);
)
);
//*****************************************EXPORT GRAPHS TO PPT**********************************//
For( i = 23, i <= N Items( colnames ), i++, // We have change i value based on the column where our modified column to plot graphs starts
nn = dt << Variability Chart(
invisible,
Y( :Data ),
Y Scale( Left, Right ),
X( Column( colnames[i] ) ),
By( :NVM Parameter Name ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Vertical Charts( 0 ),
Variability Summary Report( 0 ),
Std Dev Chart( 0 ),
Mean of Std Dev( 0 ),
Show Box Plots( 1 ),
Mean Diamonds( 1 ),
);
If( i == 23,
nn << Save Presentation( "$Downloads/jmp_example2.pptx" ),
nn << Save Presentation( "$Downloads/jmp_example2.pptx", Append )
);
);
Open( "$Downloads/jmp_example2.pptx" );
Sólo una sugerencia:
Apile las tres columnas de Mediciones y luego haga esta figura en el generador de gráficos.
Son todas las figuras en una diapositiva.

El método que uso es crear las diapositivas como quiero que estén dentro de JMP, y luego copiarlas como imágenes en una ventana de visualización final, un objeto de imagen para cada página pptx que quiero.
A continuación se muestra un script que muestra un ejemplo simple.
Names default to here(1);
dt=Open("$SAMPLE_DATA/big class.jmp");
// Create the 2 graphs
fg = dt << Fit Group(
Oneway(
Y( :height ),
X( :sex ),
SendToReport(
Dispatch( {}, "Oneway Plot", FrameBox, {Frame Size( 463, 305 )} )
)
),
Oneway(
Y( :weight ),
X( :sex ),
SendToReport(
Dispatch( {}, "Oneway Plot", FrameBox, {Frame Size( 463, 305 )} )
)
),
<<{Arrange in Rows( 1 )}
);
// Place the graphs into a single picture
nw=new window("The Picture", report(fg)[outlinebox(1)]<<GET picture=""></GET>Jim, estaba pensando lo mismo, pero, como en este caso, ¿qué pasa si no sabes cuántos gráficos habrá de antemano? ¿Cómo harías para hacer n pares de gráficos?
Lo que normalmente manejo es que el script cree los objetos de imagen emparejados a medida que se crean. Y luego anexarlos al diario. Entonces, en el caso anterior en el que se crean múltiples Gráficos de Variabilidad, crearía un Cuadro de Lista V () o un Cuadro de Lista H para la iteración de bucle 1 y agregaría el primer gráfico de iteración al Cuadro de Lista (), y luego en el bucle de iteración 2, Agregaría el resultado al Cuadro de lista, y luego copiaría una imagen del Cuadro de lista a la ventana del diario, y luego eliminaría el Cuadro de lista (), y comenzaría de nuevo para la iteración 3, etc.
También se puede consultar el Diario después de que todos los Gráficos de Variabilidad estén allí, usando XPath, y averiguar el número de Cuadros de Contorno, y desde allí construir sus pares y colocarlos en una nueva ventana del diario que puede ser su salida final de Guardar Presentación
Y estoy seguro de que se están utilizando otros métodos
Lo que sería genial es un objeto de visualización (¿tal vez llamarlo "slidebox ()") que puede colocar objetos de visualización dentro de él, y luego todo en ese contenedor se trata como una diapositiva (o una página).
De hecho, creo que la funcionalidad ya está ahí. Utilizo cuadros de esquema la mayoría de las veces como su SlideBox (). Simplemente construyo los resultados cuando los necesito, y luego los coloco en un Cuadro de esquema () y luego los agrego al Diario que estoy construyendo. Se elige el Cuadro de esquema (), debido a la forma en que JMP maneja los cuadros de esquema con archivos pptx. El título del cuadro de contorno () se convierte en el título de la diapositiva, y la "imagen" que he colocado en el cuadro de contorno () se convierte en el contenido de la diapositiva.
Sí, podría haber algunos valores predeterminados establecidos para un "SlideBox ()" que podrían facilitarlo, pero la mayoría de las veces, las combinaciones de objetos que reuní requieren múltiples cuadros de lista H, cuadros de lista V, cuadros de alineación, etc. la pantalla como la quiero.
La clave para esto es que todos los cuadros de contorno que se encuentran dentro del cuadro de contorno deben copiarse como una imagen. Debe crear su página deseada usando cualquier estructura que necesite, y el paso final es agregar esa página deseada usando << obtener imagen, en el cuadro de esquema desde el que va a << Guardar presentación.