¿Cómo consigo los contenedores de Scatterplot 3D?Hola,
Cuando represento datos en un Scatterplot 3D, repito algunas acciones con frecuencia. Por ejemplo, cambio el tema del color (barra de colores), el tamaño de los puntos, etc. Las tablas son diferentes pero las acciones son las mismas y no se refieren a columnas específicas, por lo que supongo que las acciones pueden automatizarse.
Me pregunto cómo escribir esto para gráficos que ya están abiertos. Para grahps 2d puedo usar, por ejemplo, este comando para referirme al contenedor:
Window( Window name )[framebox( 1 )] << set background color( "gray" );
pero no puedo usarlo en un Scatterplot 3D.
Gracias,
David
Re: ¿Cómo consigo los contenedores de Scatterplot 3D?Hola @Perla ,
Scatterplot 3D usa un Display3DBox, por lo que debería funcionar para hacer referencia a ese objeto, y lo que usará para la mayoría de los mensajes (configuración de colores de pared, marcadores, rotación, giro, etc.):
Window( Window name )[Display3DBox(1)]
Si necesita establecer el color de fondo, realmente querrá hacer referencia al SceneBox:
Window( Window name )[SceneBox(1)]<<BACKGROUND color=""></BACKGROUND>
Aquí hay un ejemplo completo donde coloco las paredes y el fondo en azul:
Open( "$SAMPLE_DATA\Big Class.jmp" );
s3d = Scatterplot 3D( Y( :age, :height, :weight ), Frame3D( Set Grab Handles( 0 ) ) );
//view properties if you wish to see options
//show properties(Window( "Big Class - Scatterplot 3D" )[SceneBox(1)])
//show properties(Window( "Big Class - Scatterplot 3D" )[Display3DBox(1)])
Window( "Big Class - Scatterplot 3D" )[Display3DBox( 1 )] << Set Wall Color( 5 );
Window( "Big Class - Scatterplot 3D" )[Scene Box( 1 )] << Background color( blue );
¡Espero que esto ayude!
@Julian
Re: ¿Cómo consigo los contenedores de Scatterplot 3D?Si cambia los colores de forma interactiva y guarda el script, Scatterplot 3D grabará los colores directamente como parte del script:
Scatterplot 3D(
Y( :age, :height, :weight ),
Frame3D(
<STRONG>Set Wall Color( -16750758 ),</STRONG>
Set Grab Handles( 0 ),
Set Rotation( -52.9429431878029, -1.24217455677765, 22.838483399832 ),
<STRONG>Background Color( 144, 191, 4 )</STRONG>
)
);
Esta podría ser la solución más fácil si conoce los colores que desea cuando se lanza la plataforma.
Re: ¿Cómo consigo los contenedores de Scatterplot 3D?Hola @Julian ,
Muchas gracias por su respuesta. Display3DBox es muy útil para cambiar muchas propiedades.
Sin embargo, todavía no puedo cambiar la leyenda de la trama. Si guardo la secuencia de comandos, este es el código y aparece en Enviar a Informe (Despacho (...)).
obj = Scatterplot 3D(
Y( :x, :y, :z ),
Coloring( :T composed 2 ),
Legend( 84 ),
Frame3D( Legend( 1 ), Set Grab Handles( 0 ), Set Rotation( -54, 0, 38 ) ),
SendToReport(
Dispatch(
{},
"100",
ScaleBox,
{Legend Model( 3, Properties( 0, {gradient( {Color Theme( "Spectral" )} )} ) )}
)
);
);¿Sabrías una manera de acceder a estas propiedades similares a Ventana ( Nombre de la ventana ) El Display3DBox ( 1 ) ] ?
Re: ¿Cómo consigo los contenedores de Scatterplot 3D?Gracias @danschikore , como dice la solución más fácil es cambiar la configuración predeterminada en Preferencias. Sin embargo, cambiar las propiedades en un script podría ser útil para mí en el futuro.Re: ¿Cómo consigo los contenedores de Scatterplot 3D?Hola @Perla ,
Para indicar a la plataforma que envíe opciones, necesitará un controlador para el objeto de secuencias de comandos (la propia plataforma 3D de scatterplot) en lugar de la ventana del informe. Podemos usar << Get Scriptable Object para ayudarnos aquí. Una vez que tenga ese identificador, puede enviar el mensaje de envío exacto que encontró cuando guardó el script. Aquí hay un ejemplo completo de eso, incluidas las personalizaciones anteriores que mostré:
Open( "$SAMPLE_DATA\Big Class.jmp" );
s3d = Scatterplot 3D( Y( :age, :height, :weight ), Coloring( :sex ), Legend( 17 ), Frame3D( Legend( 1 ) ) );
//view properties if you wish to see options
//show properties(Window( "Big Class - Scatterplot 3D" )[SceneBox(1)]);
//show properties(Window( "Big Class - Scatterplot 3D" )[Display3DBox(1)]);
//set colors, contolled in the report layer<BR />Window( "Big Class - Scatterplot 3D" )[Display3DBox( 1 )] << Set Wall Color( 5 );
Window( "Big Class - Scatterplot 3D" )[Scene Box( 1 )] << Background color( blue );
//find the scriptable object so that options can be dispatched
s3dFound = Window( "Big Class - Scatterplot 3D" )[Outline Box( 1 )] << Get Scriptable Object;
//Dispatch options by sending messages to that scriptable object
s3dFound << Dispatch(
{},
"100",
ScaleBox,
{Legend Model(
17,
Properties( 0, {Line Color( 73 ), Marker Size( 10 )}, Item ID( "F", 1 ) ),
Properties( 1, {Line Color( 45 ), Marker Size( 10 )}, Item ID( "M", 1 ) )
)}
);
@Julian
Re: ¿Cómo consigo los contenedores de Scatterplot 3D?Debería agregar, si utiliza un script para generar la salida en primer lugar, ya tendrá un identificador de la plataforma (asumiendo que lo hizo cuando lanzó la plataforma). En mi ejemplo, eso es s3d. Pero, si tiene una ventana que no está generada por una secuencia de comandos, el uso de << Obtener objeto de secuencias de comandos le permite establecer un identificador para esa plataforma.Re: ¿Cómo consigo los contenedores de Scatterplot 3D?Gracias @Julian , esto es muy interesante.