Llamar a las funciones del menú JMP incorporado dentro del scriptHola 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 3D del diagrama de dispersión para un ángulo de rotación particular (predeterminado por la rotación del usuario del gráfico 3D generado al hacer el diagrama de dispersión 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 y interactúe con un script R (ya escrito) para generar un gráfico 2D a partir del diagrama de dispersión 3D. Esto me permitiría evitar el inconveniente de trabajar con el portapapeles de Mac. .
Cualquier ayuda se agradece, gracias.
Automatización y secuencias de comandosIngeniería de Calidad y ProcesosRe: Llamar a las funciones del menú JMP incorporado dentro del scriptCreo que hay un desajuste de expectativas.El propósito del grupo de discusión en la comunidad JMP no es proporcionar soluciones completas a pedido de los usuarios de JMP.El guión que proporcioné debe considerarse como una ilustración de una forma de abordar el problema.Una herramienta de aprendizaje para que el usuario avance hasta su solución final.
Ahora, para abordar el problema de la última entrada, ¿cómo imagina que el usuario de JMP ejecute el script que desea?¿Cómo elegirán qué columnas usar en el diagrama de dispersión?
Si el plan es que el usuario simplemente ejecute un diagrama de dispersión 3D y luego, cuando llegue al punto que desea, y luego ejecute un script para eliminar el script y obtener las columnas y rotaciones, aquí hay una pieza. de JSL que encuentra la ventana del diagrama de dispersión y luego, tomando el código de mi última entrada, crea un archivo csv
Names Default To Here( 1 );
// Find the current report
curReport = Current Report();
// Check to see if the JMP current report is actually the Scatterplot 3D report
If( curReport[Outline Box( 1 )] << get title == "Scatterplot 3D",
theScript = Char( (xx[Outline Box( 1 )] << get scriptable object) << get script );
dt = Current Data Table();
,
// If not, find the window that is the 3D plot
i = 1;
While( Try( Window( i )[Outline Box( 1 )] << get title, "" ) != "Scatterplot 3D" & i < 100, i++ );
If( i < 100,
curReport = Window( i )[Outline Box( 1 )];
theScript = Char( (curReport[Outline Box( 1 )] << get scriptable object) << get script );
dt = Data Table( Trim( Word( 1, Window( i ) << get window title, "-" ) ) );
,
// If no Scatterplot 3D is jound, display an error
Dialog( "Error: No Scatterplot 3D was found" );
Throw();
);
);
// If the code makes it to here, strip off the script components needed
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(" ) ), "()," ) );
// Add the columns used and the rotations to a new data table
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 );
Re: Llamar a las funciones del menú JMP incorporado dentro del scriptGracias por el útil consejo. Intentaré integrar esto en mi solución. Esto tiene sentido. Mi única preocupación con este JSL es que, para cada nuevo conjunto de datos, tendría que escribir manualmente 3 nuevos nombres de columnas (:edad, etc...) para cada nuevo conjunto de datos en el que quiero ejecutar mi script, que en mi caso anularía el propósito de automatizar este proceso.Re: Llamar a las funciones del menú JMP incorporado dentro del scriptEsta pregunta de discusión parece estar relacionada o ser la misma pregunta que la discusión anterior. Seleccione columnas de rotación y datos del script de diagrama de dispersión 3D
Para responder a la pregunta específica de esta publicación, Tu 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 debate mencionada anteriormente.En él, permite al usuario ejecutar un diagrama de dispersión 3D, y cuando el diagrama de dispersión está cerrado, va al árbol de visualización y extrae el script JMP que, si se ejecuta, regeneraría el diagrama de dispersión 3D, tal como estaba cuando estaba cerrado.Luego, el script 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í, vuelve a agregar 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 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 guardarla en un archivo de imagen o pasar la imagen como un blob.No sé exactamente lo que estás buscando.Es posible que desee analizar 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 sobre exactamente lo que necesita e intentaremos ayudarlo a resolver los problemas.
Finalmente, 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.
Re: Llamar a las funciones del menú JMP incorporado dentro del scriptComo seguimiento de esto, ¿hay alguna manera de insertar el diagrama de dispersión actualmente abierto en una variable?