Script JSL: Graph Builder para trazar todas las columnas de una tabla de datosHola a todos,
Usuario de JMP desde hace mucho tiempo (novato en scripting jsl), poster por primera vez. ¡Agradecería cualquier ayuda!
Estoy escribiendo un guión que hace dos cosas:
Primero, abra un archivo de texto, importe los datos numéricos y luego guarde la tabla de datos para poder abrirla más tarde.
2. utilice el generador de gráficos para trazar todas las columnas del "eje y" a la vez
No tengo problemas con el punto n.° 1, por lo que no son necesarios comentarios al respecto. El artículo 2 me está dando problemas. No he encontrado una manera de trazar todas las columnas del eje y a la vez, en un gráfico.
La tabla de datos tiene una columna de datos del eje x (datos que se usarán en el eje x del gráfico resultante), pero puede tener 1 o más columnas de datos que deben estar en el mismo eje y del gráfico. Estoy tratando de comparar visualmente estos datos y usar un gráfico con todos los trazados es muy útil. Probablemente podría simplemente apilar los datos en un conjunto de datos x y uno y con una tercera columna utilizada para la superposición, pero no quiero hacer eso.
¿Algunas ideas?
Re: Script JSL: Graph Builder para trazar todas las columnas de una tabla de datosGracias Jim,
Esto funcionó perfectamente. Y agradezco su gentil empujón para leer el manual; lo haré nuevamente y espero conservar otro pequeño porcentaje del mismo. Sin embargo, no siempre aprendo del manual y por eso vine aquí. Honestamente, me habría tomado alrededor de 5 horas descubrir lo que hizo, así que aprecio su enfoque experto ya que me ahorró un tiempo valioso y me mostró algo nuevo que puedo usar en el futuro. Salud
Re: Script JSL: Graph Builder para trazar todas las columnas de una tabla de datos- Necesitas leer la Guía de secuencias de comandos.
- Le proporcioné un script que le mostraba cómo debía verse el JSL para poder crear su gráfico, o al menos mi interpretación del gráfico que deseaba.
- Mi sugerencia para ejecutarlo de forma interactiva es brindarle una manera de producir el gráfico de la manera que desea que se vea y luego todo lo que necesita hacer es hacer que JMP genere el script para el gráfico, que luego le muestra lo que necesita. que se creará para producir el gráfico.
- Adjunté un script que incluye la tabla de datos de capacidad de semiconductores y luego, utilizando todas las columnas continuas, produce el gráfico superpuesto.La primera columna continua se utiliza como columna X y el resto se utiliza como columnas Y múltiples.
- Todas las funciones utilizadas en el script están documentadas en el Índice de scripting.Sin embargo, el aprendizaje de las diversas herramientas y estructuras es lo que le permitirá crear scripts creados de forma independiente.
- El grupo de discusión de la comunidad está aquí para ayudarlo cuando tenga problemas para comprender algún componente dentro de JSL.
- Ejemplos de creación de análisis, gráficos, etc. a partir de una tabla de datos dinámicos de entrada están disponibles en las Discusiones en el sitio de la Comunidad.Es necesario buscar soluciones en las discusiones ya publicadas.
-
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Get the column names in the data table
colList = dt << get column names( string, continuous );
// Start building the command required that when run will create
// the desired chart
theExpr = "Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :" || colList[1] || " ),
Y( :" || colList[2] || " )";
// Repeat the operation for the remaining columns in the list
For( i = 3, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y( :" || colList[i] || ", Position( 1 ) )"
);
// Add in the element descriptions
theexpr = theExpr || "),
Elements(
Points(
X";
// Repeat for the remaining Y columns
For( i = 2, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y(" || Char( i ) || ")"
);
theExpr = theExpr || ",Legend( 5 ));";
// Execute the generated commands
Eval( Parse( theexpr ) );Re: Script JSL: Graph Builder para trazar todas las columnas de una tabla de datosHola Jim,
¡Gracias por la respuesta oportuna! Tu publicación describe exactamente lo que quiero que haga el script, no, no lo haré de forma interactiva. El gráfico debe crearse utilizando un script, de modo que cuando ejecute el script:
1. abre un archivo de texto y carga todos los datos en una tabla de datos, guarda la tabla de datos (ya completé esta parte del script sin problemas).
2. crea un gráfico único de todas las columnas de datos y versus una columna de datos x (esto es con lo que necesito ayuda)
El archivo de datos puede tener cualquier número de columnas de datos y (con nombres diferentes), pero siempre hay una sola columna de datos x. El script del cargador que ya escribí carga todos los datos y nombra las columnas.No sé de antemano cuántas columnas de datos y tengo hasta que el archivo se haya cargado en una tabla de datos.
Lo que estaba pensando inicialmente era enviar una lista de columnas a la variable "Y" en el generador de gráficos, pero no estoy seguro de si eso es posible. Abierto a otras sugerencias también, pero me gustaría conservar la estructura de la tabla de datos de una columna de datos x, con muchas columnas de datos y (es decir, no quiero apilar los datos).
-dave
Re: Script JSL: Graph Builder para trazar todas las columnas de una tabla de datosSi ejecuta interactivamente el generador de gráficos, todo lo que tiene que hacer para trazar varias columnas como el eje Y es tomar todas las columnas que desea graficar y arrastrarlas a la zona de colocación Y.

El JSL para hacer esto está a continuación.
names default to here(1);
dt=open("$SAMPLE_DATA/semiconductor capability.jmp");
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :NPN1 ),
Y( :PNP1 ),
Y( :PNP2, Position( 1 ) ),
Y( :NPN2, Position( 1 ) ),
Y( :PNP3, Position( 1 ) ),
Y( :IVP1, Position( 1 ) ),
Y( :PNP4, Position( 1 ) ),
Y( :NPN3, Position( 1 ) ),
Y( :IVP2, Position( 1 ) )
),
Elements(
Points(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 5 )
),
Smoother(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 6 )
)
)
);