Hola a todos,
Scripter JSL sin experiencia aquí. Disculpas si esta es una pregunta trivial, pero me preguntaba si había una manera de insertar en una variable el comando scatterplot 3D para un ángulo de rotación particular (predeterminado por la rotación del usuario del gráfico 3D generado al hacer scatterplot 3D manualmente) desde dentro un script JSL. Por ejemplo,
sp = Scatterplot 3D(
Y( :age, :height, :weight ),
Frame3D( Set Grab Handles( 0 ), Set Rotation( -54, 0, 38 ) )
);
, pero la idea es poder hacer esto sin copiar y pegar manualmente los valores de rotación en el código, ya que estoy tratando de automatizar un proceso que requiere como entrada los valores de rotación de un diagrama de dispersión ya generado. El objetivo final es tener un script que tome los valores de rotación predeterminados como entrada e interactúe con un script R (ya escrito) para generar un diagrama 2D a partir del diagrama de dispersión 3D. Esto me permitiría circunnavegar el inconveniente de trabajar con el portapapeles de Mac. .
Cualquier ayuda se agradece, gracias.
Como continuación de esto, ¿hay alguna manera de insertar el diagrama de dispersión actualmente abierto en una variable?
Esta pregunta de discusión parece estar relacionada con, o la misma pregunta que la discusión anterior Seleccione la rotación y las columnas de datos del script de diagrama de dispersión 3D
Para responder a la pregunta específica de esta publicación, su guión
sp = Scatterplot 3D(
Y( :age, :height, :weight ),
Frame3D( Set Grab Handles( 0 ), Set Rotation( -54, 0, 38 ) )
);
cuando se ejecuta, genera un objeto de visualización de salida al que se puede acceder en JSL creando una variable para apuntar al objeto
spr = report( sp );
//or
spr = sp << report;
"spr" no contiene el diagrama de dispersión, sino que es un puntero al objeto superior dentro del Árbol de visualización de salida que contiene el diagrama de dispersión y los diversos objetos asociados con la visualización de salida.
A continuación se muestra el guión que escribí para la pregunta de discusión mencionada anteriormente.En él, permite al usuario ejecutar un gráfico de dispersión 3D, y cuando se cierra el gráfico de dispersión, entra en el árbol de visualización y extrae el script JMP que, si se ejecuta, regeneraría el gráfico de dispersión 3D, tal como estaba cuando estaba cerrado.El script luego continúa y extrae las columnas para los 3 ejes y los valores de rotación, en 2 listas JMP llamadas varsList y RotationList, respectivamente.A partir de ahí, agrega esos valores a la tabla de datos JMP original como nuevas columnas y luego guarda la tabla de datos como un archivo csv.
Sin saber cuál es el formato de lo que necesita en su archivo csv para pasar a R, esto fue solo una suposición de lo que se necesita.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\big class.jmp" );
sp = Scatterplot 3D(
Y( :age, :height, :weight ),
Frame3D( Set Grab Handles( 0 ), Set Rotation( -54, 0, 38 ) )
);
sp << on close(
theScript = Char( (Report( sp ) << get scriptable object) << get script );
varsList = {};
Insert Into( varsList, Word( 2, Substr( theScript, Contains( theScript, "Y(" ) ), ":," ) );
Insert Into( varsList, Word( 4, Substr( theScript, Contains( theScript, "Y(" ) ), ":," ) );
Insert Into( varsList, Word( 6, Substr( theScript, Contains( theScript, "Y(" ) ), ":,)" ) );
rotationList = {};
Insert Into( rotationList, Word( 2, Substr( theScript, Contains( theScript, "Rotation(" ) ), "()," ) );
Insert Into( rotationList, Word( 3, Substr( theScript, Contains( theScript, "Rotation(" ) ), "()," ) );
Insert Into( rotationList, Word( 4, Substr( theScript, Contains( theScript, "Rotation(" ) ), "()," ) );
dtSub = dt << subset( columns( Eval( varsList ) ), selected rows( 0 ) );
dtSub << New Column( "_Vars_", character, set values( varsList ) );
dtSub << New Column( "_Rotation_", character, set values( rotationList ) );
dtSub << Save( "$TEMP/passvalues.csv" );
close( dtSub, nosave );
);
// This line opens the csv back into JMP
//open("$TEMP/passvalues.csv");
Como nota de cómo funciona JMP, no se puede colocar el diagrama de dispersión en una variable y luego pasarlo a R o guardarlo como un archivo .csv.Sin embargo, se puede extraer la imagen del diagrama de dispersión al guardar la imagen en un archivo de imagen o pasar la imagen como un blob.No sé exactamente lo que estás buscando.Es posible que desee examinar la automatización de JMP, que le permitiría llamar a R desde JMP y pasar la información que necesita directamente de JMP a R.
Vuelva a la comunidad con más detalles de exactamente lo que necesita y haremos un intento por ayudarlo a resolver los problemas.
Por último, le recomiendo encarecidamente que se tome el tiempo de leer la Guía de secuencias de comandos para JMP / JSL que se puede encontrar en la Biblioteca de documentación de JMP en el menú desplegable Ayuda.