¿Cómo guardar gráficos cuando se usa PAGE en el generador de gráficos JSL?Si he usado la función "PÁGINA" en el generador de gráficos y ahora tengo varios gráficos en la misma página, ¿cómo obtengo los gráficos del generador de gráficos uno por uno en un bucle para guardarlos como png?
Este es un código de ejemplo de @Craige
dt = Open( "$sample_data/big class.jmp" );
ages = Data Table( "big class" ) << Summary( Group( :age ), Freq( "None" ), Weight( "None" ) );
sexes = Data Table( "big class" ) << Summary( Group( :sex ), Freq( "None" ), Weight( "None" ) );
Delete Directory( "$temp/myPics" );
Create Directory( "$temp/myPics" );
For( iage = 1, iage <= N Rows( ages ), iage++,
thisAge = ages:age[iage];
For( isex = 1, isex <= N Rows( sexes ), isex++,
thisSex = sexes:sex[isex];
Eval(
Eval Expr(
gb = dt << Graph Builder(
Size( 508, 438 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 5 ) ) ),
where( age == Expr( thisAge ) & sex == Expr( thisSex ) )
)
)
);
parentBox = (Report( gb ) << parent)< picture = parentBox << getpicture;
picture << saveImage( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png", "png" );
// optional: Open( "$temp/myPics/age" || Char( thisAge ) || "sex" || Char( thisSex ) || ".png" );
gb << closewindow;
);
);
Close( ages, "nosave" );
Close( sexes, "nosave" );
Show( Files In Directory( "$temp/myPics" ) );
Gracias.
Re: ¿cómo guardar gráficos cuando se usa PAGE en el generador de gráficos JSL?Un archivo pptx es solo un archivo zip disfrazado. Si cambia la extensión de .pptx a .zip (es posible que deba modificar la configuración de la carpeta en Windows para mostrar las extensiones de archivo conocidas). Dentro del archivo zip habrá una carpeta llamada media que contiene todas las imágenes.
Re: ¿cómo guardar gráficos cuando se usa PAGE en el generador de gráficos JSL?Lo hice funcionar en el powerpoint con un bucle. gracias wendyRe: ¿cómo guardar gráficos cuando se usa PAGE en el generador de gráficos JSL?gracias melanie Probaré eso.Re: ¿cómo guardar gráficos cuando se usa PAGE en el generador de gráficos JSL?Powerpoint funciona, aunque no estoy seguro de cómo sacar las imágenes de PowerPoint.
Experimenté y tuve algo de suerte guardando como html. Cuando guarda un informe como html, todas las imágenes se guardan en una carpeta llamada gfx. Si sigue guardando el archivo una y otra vez, la carpeta gfx no se reescribe como lo hace la página html, sino que todas las imágenes se agregan a la misma carpeta.
He tenido varias versiones de este script de ejemplo en el que estábamos trabajando en los mensajes y, a veces, guardaba cada gráfico individualmente y, a veces, no. Con la iteración actual, parece funcionar. Si no es así, hay algún código que guarda en powerpoint en lugar de eso está comentado. Vea si puede hacer que esto funcione con su script más complejo. Tenga en cuenta que la página html final solo tendrá el último informe del generador de gráficos, no todos. En la carpeta gfx, obtengo una imagen para cada gráfico y también una imagen para cada cuadro de leyenda; tendrá que seleccionarlos.
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
unique lotid = Associative Array(dt:lot_id);
unique Wafer = Associative Array(dt:wafer);
currentid = unique lotid << First;
currentwafer = unique Wafer << First;
For( iwfr = 1, iwfr <= N Items( unique Wafer ), iwfr++,
nextwafer = unique Wafer << Next( currentwafer );
Eval(
Eval Expr(
gb4 = dt << Graph Builder(
Variables(
X( :NPN1 ),
Y( :PNP1 ),
Page( :SITE ),
Group X( :PNP2 ),
Group Y( :NPN2 ),
Color( :lot_id )
),
Elements( Treemap( X, Y, Legend( 24 ), Summary Statistic( "% of Total" ) ) ),
where( Wafer == Expr( currentwafer ) ),
Display( :SITE, Size( 181, 153 ), List Display ),
)
)
);
// powerpoint save
//If( File Exists("$desktop/wow.pptx"), gb4 << Save Presentation( "$desktop/wow.pptx", "Append", "PNG" ),
// gb4 << Save Presentation( "$desktop/wow.pptx", "PNG" )
//);
// html save
gb4 << Save HTML( "$desktop/wow.html", "PNG" );
gb4 << Close Window;
currentid = unique lotid << First;
);Re: ¿cómo guardar gráficos cuando se usa PAGE en el generador de gráficos JSL?Sí, hay un ejemplo en el índice de secuencias de comandos.
- Haga clic en el menú Ayuda y seleccione Índice de secuencias de comandos.
- Ingresar Guardar presentación en el cuadro de búsqueda.
El índice de secuencias de comandos proporciona la sintaxis, una breve descripción y una secuencia de comandos de ejemplo para Guardar presentación . Adjunto una imagen de la ventana para su conveniencia.
¡Buena suerte con tu proyecto de secuencias de comandos!
Wendy
Re: ¿cómo guardar gráficos cuando se usa PAGE en el generador de gráficos JSL?Creo que puedo trabajar con eso,
¿Es solo una línea de guión para obtener el powerpoint?
gracias wendyRe: ¿cómo guardar gráficos cuando se usa PAGE en el generador de gráficos JSL?Con Page(), los gráficos completos no se almacenan en DisplayBoxes individuales que se pueden guardar en archivos PNG individuales. Exportar a un archivo de PowerPoint dividiría las páginas. De lo contrario, deberá utilizar un filtro de datos local, Where() o By().
Wendy
Re: ¿cómo guardar gráficos cuando se usa PAGE en el generador de gráficos JSL?Hola Wendy,
Gracias por la idea de usar By. La razón por la que quiero la función PÁGINA es porque me da la opción de bloquear las escalas y puedo mostrar todas, no solo la seleccionada.
Por casualidad, ¿hay alguna forma de acceder a diferentes gráficos para trazar utilizando la función PÁGINA? Sería realmente útil.
Muchas gracias.
Re: ¿cómo guardar gráficos cuando se usa PAGE en el generador de gráficos JSL?Hola,
Personalmente, usaría By() en lugar de Page() para este caso porque con By, se devuelve una lista de objetos Graph Builder. Luego puedo recorrer la lista de objetos para guardar cada archivo PNG. Por ejemplo,
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
gb = dt << Graph Builder(
Size( 528, 454 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 3 ) ), Smoother( X, Y, Legend( 4 ) ) ),
By( :age, :sex )
);
For( i = 1, i <= N Items( gb ), i++,
fName = Report( gb[i] )[Outline Box( 1 )] << Get Title;
Report( gb[i] )[Outline Box( 1 )] << Save Picture( "$TEMP/myPics/" || fName || ".png", "PNG" );
);
¡Espero que esto ayude!
Wendy