¿Cómo implemento usando JSL?Hola a todos,
¿Cómo implemento los pasos descritos en el excel (adjunto) usando JSL? También he adjuntado algunas secuencias de comandos JSL que pueden ser útiles para lograr algunos de los pasos intermedios que estoy tratando de implementar utilizando JSL, para que pueda copiarlo si es relevante y útil.
Bivariate(
Y( :y1_y2_y3 ),
X( :x1_x2_x3 ),
Fit Where(
:Case == "A",
Fit Special( yTran( "Log" ), {Line Color( "Dark Green" )} )
),
Fit Where(
:Case == "B",
Fit Special( yTran( "Log" ), {Line Color( "Medium Dark Red" )} )
),
Fit Where(
:Case == "C",
Fit Special( yTran( "Log" ), {Line Color( "Black" )} )
),
Fit Where(
:Case == "D",
Fit Special( yTran( "Log" ), {Line Color( "Magenta" )} )
),
Fit Where(
:Case == "E",
Fit Special( yTran( "Log" ), {Line Color( "Blue" )} )
),
Fit Where(
:Case == "F",
Fit Special( yTran( "Log" ), {Line Color( "Medium Dark Cyan" )} )
),
SendToReport(
Dispatch(
{},
"1",
ScaleBox,
{Min( 2.318802 ), Max( 6.35577464892554 ), Inc( 0.5 ), Minor Ticks( 1 ),
Add Ref Line( 0.526, "Solid", "Black", "yref_1", 1 ),
Add Ref Line( 1.21, "Solid", "Black", "yref_2", 1 ),
Add Ref Line( 2.421, "Solid", "Black", "yref_3", 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
),
Dispatch(
{},
"2",
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 11, 0 ), Min( 0.0000000003 ),
Max( 0.00001144934215806 ), Inc( 1 ), Minor Ticks( 1 ),
Add Ref Line( 0.000000579, "Solid", "Black", "x_ref3", 1 ),
Add Ref Line( 0.000000053, "Solid", "Black", "x_ref2", 1 ),
Add Ref Line( 0.0000000075, "Solid", "Black", "xref_1", 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{DispatchSeg( Line Seg( 1 ), {Line Color( "Dark Green" )} ),
DispatchSeg( Line Seg( 6 ), {Line Color( "Medium Dark Red" )} ),
DispatchSeg( Line Seg( 11 ), {Line Color( "Black" )} ),
DispatchSeg( Line Seg( 16 ), {Line Color( "Magenta" )} ),
DispatchSeg( Line Seg( 21 ), {Line Color( "Blue" )} ),
DispatchSeg( Line Seg( 26 ), {Line Color( "Medium Dark Cyan" )} )}
)
)
)Re: ¿Cómo implemento usando JSL?Hola Jim,
Estoy intentando hacer un gráfico log-lineal (inicio de sesión en el eje Y) para un Caso = A / B / C y se cumple una segunda condición en la Columna2 == "20/30/40". He publicado la secuencia de comandos a continuación (2 formas ligeramente diferentes) pero recibo un error como el siguiente. ¿A dónde me voy mal?
Inesperado "y CPP". Quizás falte un "," o ")".
Tratando de analizar los argumentos de la función "Ajustar dónde".
Línea 6 Columna 28:: Caso == "A" ►y Columna2 == "20",
1. 1ª vía:
Bivariada
Y (: Nombre ("Y1")),
X (: X1),
// Fit Special (yTran ("Log"), {Line Color ({213, 72, 87})}),
Encajar donde
: Caso == "A" y Column2 == "20",
Especial de ajuste (yTran ("Log"), {Color de línea ("Verde oscuro")}),
)
SendToReport (
Envío(
{}
"1",
ScaleBox,
{Min (60.936357421875), Max (81.283232421875), Inc (2),
Señales Menores (1), Fila de Etiqueta (
{Mostrar cuadrícula principal (1), Mostrar cuadrícula secundaria (1)}
)}
)
Envío(
{}
"2",
ScaleBox,
{Escala ("Registro"), Formato ("Científico", 11), Mín. (0.0000002),
Max (0.000634968347287381), Inc (1), garrapatas menores (1),
Fila de etiqueta (
{Mostrar cuadrícula principal (1), Mostrar cuadrícula secundaria (1), Establecer tamaño de fuente (12)}
)}
)
)
)
2. 2ª vía:
Bivariada
Y (: Nombre ("Y1")),
X (: X1),
// Fit Special (yTran ("Log"), {Line Color ({213, 72, 87})}),
Encajar donde
: Caso == "A"
: Column2 == "20",
Especial de ajuste (yTran ("Log"), {Color de línea ("Verde oscuro")}),
)
SendToReport (
Envío(
{}
"1",
ScaleBox,
{Min (60.936357421875), Max (81.283232421875), Inc (2),
Señales Menores (1), Fila de Etiqueta (
{Mostrar cuadrícula principal (1), Mostrar cuadrícula secundaria (1)}
)}
)
Envío(
{}
"2",
ScaleBox,
{Escala ("Registro"), Formato ("Científico", 11), Mín. (0.0000002),
Max (0.000634968347287381), Inc (1), garrapatas menores (1),
Fila de etiqueta (
{Mostrar cuadrícula principal (1), Mostrar cuadrícula secundaria (1), Establecer tamaño de fuente (12)}
)}
)
)
)
Gracias,
ANUNCIO
Re: ¿Cómo implemento usando JSL?Hola Jim, probé ambos (uno a la vez)
dt << Marcador por columna (: Identificación de la oblea);
dt << Marcador por grupo (: Identificación de la oblea);
antes de hacer las tramas como se muestra abajo, pero no hace lo que quiero
Biv = dtStack << Bivariable (
Y (...
Gracias,
ANUNCIO
Re: ¿Cómo implemento usando JSL?Muchas gracias Jim por tus claras explicaciones. Déjame intentarlo.
Saludos,
ANUNCIO
Re: ¿Cómo implemento usando JSL?Con respecto a su función Open (), si su tabla de datos JMP se guarda en su carpeta Documentos, y se llama "filename.jmp", entonces es correcta.
El código
dtStack = dtSumm << Stack(
columns( :x1, :x2, :x3, :y1, :y2, :y3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Name( "Non-stacked columns" )(Keep( :Case )),
Number of Series( 2 ),
Contiguous
);
sólo está utilizando la plataforma de tabla de datos de pila
Tablas ==> Pila
Puede ejecutarlo manualmente en su tabla de datos y obtener los mismos resultados que el script. Pero básicamente, hay 2 conjuntos de columnas para apilar, x1, x2, x3, y las mismas variantes y de y1, y2, y3. Por lo tanto, la especificación de las 6 columnas en la especificación Columnas () y la configuración de Número de series (2). El elemento Contigous indica que se divide la lista en el medio, en lugar de alternar entre x1, y1 ..... etc. Cuando apila un conjunto de columnas, las medidas se colocan en una nueva columna denominada Datos. Y los nombres de las columnas se colocan en una nueva columna llamada Etiqueta. Como estamos apilando 2 conjuntos de columnas, hay columnas Datos y Datos 2, Etiqueta y Etiqueta 2.
// Clean Up data table
dtStack << delete columns( {"Label", "Label 2"} );
dtStack:Data << set name( "x1_x2_x3" );
dtStack:Data 2 << set name( "y1_y2_y3" );
Este código simplemente elimina las columnas Etiqueta y Etiqueta 2, ya que no las necesitamos, y luego se cambia el nombre de Datos y Datos 2 a nombres más significativos.
Puede leer acerca de la plataforma de pila en el documento Uso de JMP
Ayuda ==> Libros ==> Usando JMP
Re: ¿Cómo implemento usando JSL?Hola Jim,
Abrí mi archivo de Excel y lo guardé como una hoja de trabajo JMP. Entonces estoy usando
dt = abierto ( "C: \ Users \ user_name \ Documents \ filename.jmp" );
¿Este formato es correcto?
Creo que no puedo obtener el gráfico después de implementar su código, necesito entender su código mejor porque los parámetros de mi conjunto de datos son un poco diferentes en los nombres de parámetros, etc.
¿Puede explicar qué es "Label", "Label2", Data, Data 2? ¿Necesito definirlos explícitamente en mi conjunto de datos? A partir de ahora, no están definidos. No los veo definidos en las tablas de datos que creaste también.
dtStack = dtSumm << Apilar (
columnas (: x1,: x2,: x3,: y1,: y2,: y3),
Columna de la etiqueta de origen ( "Etiqueta" )
Columna de datos apilados ( "Datos" )
Nombre ( "Columnas no apiladas" ) (Mantener (: Caso)),
Número de series ( 2 )
Contiguo
);
// Limpiar tabla de datos
dt stack << eliminar columnas ({ "Etiqueta" , "Etiqueta 2" });
dtStack: Datos << escoger un nombre ( "x1_x2_x3" );
dtStack: Datos 2 << escoger un nombre ( "y1_y2_y3" );
Saludos,
ANUNCIO
Re: ¿Cómo implemento usando JSL?¿Cómo es el diseño de tu hoja de cálculo? Si es una tabla de filas y columnas ... como una tabla de datos JMP, entonces la sintaxis es:
dt = open("<PATH to="" your="" excel="" file="">");</PATH>Re: ¿Cómo implemento usando JSL?Hola Jim,
Oh! Ya veo ... Lástima que no me di cuenta. Muchas gracias por explicar esto. Eso suena genial ! Estoy leyendo los datos desde un archivo de Excel en JMP. ¿Hay una forma inteligente de hacer esto?
Saludos,
Anuncio
Re: ¿Cómo implemento usando JSL?OK .... Debería haber sido más claro. Todo el código que proporcioné que crea la tabla de datos se colocó allí, solo para poder crear una tabla de datos de ejemplo para demostrar el código. Puede ingresar la tabla de datos directamente desde Excel, o donde quiera que tenga sus datos. La única parte real del script que se necesita, una vez que lea sus datos, es:
// Create the Median Table
dtSumm = dt << Summary(
Group( :Case ),
Median( :x1 ),
Median( :x2 ),
Median( :x3 ),
Median( :y1 ),
Median( :y2 ),
Median( :y3 ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" ),
Link to original data table( 0 )
);
dtStack = dtSumm << Stack(
columns( :x1, :x2, :x3, :y1, :y2, :y3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Name( "Non-stacked columns" )(Keep( :Case )),
Number of Series( 2 ),
Contiguous
);
// Clean Up data table
dtStack << delete columns( {"Label", "Label 2"} );
dtStack:Data << set name( "x1_x2_x3" );
dtStack:Data 2 << set name( "y1_y2_y3" );
Biv = dtStack << Bivariate(
Y( :y1_y2_y3 ),
X( :x1_x2_x3 ),
Fit Where(
:Case == "A",
Fit Special( yTran( "Log" ), {Line Color( "Dark Green" )} )
),
Fit Where(
:Case == "B",
Fit Special( yTran( "Log" ), {Line Color( "Medium Dark Red" )} )
),
Fit Where( :Case == "C", Fit Special( yTran( "Log" ), {Line Color( "Black" )} ) ),
Fit Where(
:Case == "D",
Fit Special( yTran( "Log" ), {Line Color( "Magenta" )} )
),
Fit Where( :Case == "E", Fit Special( yTran( "Log" ), {Line Color( "Blue" )} ) ),
Fit Where(
:Case == "F",
Fit Special( yTran( "Log" ), {Line Color( "Medium Dark Cyan" )} )
),
SendToReport(
Dispatch(
{},
"1",
ScaleBox,
{Min( 2.318802 ), Max( 6.35577464892554 ), Inc( 0.5 ), Minor Ticks( 1 ),
Add Ref Line( 0.526, "Solid", "Black", "yref_1", 1 ),
Add Ref Line( 1.21, "Solid", "Black", "yref_2", 1 ),
Add Ref Line( 2.421, "Solid", "Black", "yref_3", 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
),
Dispatch(
{},
"2",
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 11, 0 ), Min( 0.0000000003 ),
Max( 0.00001144934215806 ), Inc( 1 ), Minor Ticks( 1 ),
Add Ref Line( 0.000000579, "Solid", "Black", "x_ref3", 1 ),
Add Ref Line( 0.000000053, "Solid", "Black", "x_ref2", 1 ),
Add Ref Line( 0.0000000075, "Solid", "Black", "xref_1", 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{DispatchSeg( Line Seg( 1 ), {Line Color( "Dark Green" )} ),
DispatchSeg( Line Seg( 6 ), {Line Color( "Medium Dark Red" )} ),
DispatchSeg( Line Seg( 11 ), {Line Color( "Black" )} ),
DispatchSeg( Line Seg( 16 ), {Line Color( "Magenta" )} ),
DispatchSeg( Line Seg( 21 ), {Line Color( "Blue" )} ),
DispatchSeg( Line Seg( 26 ), {Line Color( "Medium Dark Cyan" )} )}
)
)
);
Por cierto, ¿qué método estás usando para ingresar los datos? Si tiene un problema con eso, podemos trabajar en eso también.
Re: ¿Cómo implemento usando JSL?Hola Jim,
¡Gracias por su rápida solución! Tengo algunas preguntas más, por favor si pueden ayudar.
Me pregunto si esto es un script JSL se escalará fácilmente para grandes conjuntos de datos.
1. Parece que usted codificó el número de instancias de cada caso "A", "B", .... "F".
Está bien hacerlo si tiene 2 o 3 instancias de cada caso, pero ¿qué pasa si tengo más de 100 instancias de cada una para "A", "B" ... "F". ¿Entonces tengo que repetir "A" cientos de veces en el código de abajo?
Establecer valores (
{ "UNA" , "UNA" , "UNA" , "SEGUNDO" , "SEGUNDO" , "SEGUNDO" , "DO" , "DO" , "DO" , "RE" , "RE" , "RE" , "MI" , "MI" ,
"MI" , "F" , "F" , "F" }
2. También ingresó cada uno de los valores para las variables de columna: "x1", "x2" .... "" y3 "como se muestra a continuación. De nuevo, tengo> 1000 filas de datos para cada una de las variables. Luego, escribir todos los valores para cada variable parece más engorroso.
Nueva Columna ( "x1" ,
Numérico,
"Continuo" ,
Formato ( "Mejor" , 12 )
Establecer valores (
El 1.61428690437666 , 10.1190080125253 , 6.73662807021899 , 8.01466805846589 ,
6.68158041069847 , 5.7112128821412 , 2.84688009253613 , 8.24143884561082 ,
7.93797713835799 , 7.60500406538651 , 6.10376724167353 , 7.49901866647003 ,
6.75689551558008 , 8.47900118679714 , 8.31129239105815 , 2.25776032554558 ,
3.47918899345697 , 7.54113635144146 ]
¿Me puede ayudar, por favor, hágame saber si hay una manera menos complicada de implementar esto para conjuntos de datos más grandes?
Saludos,
ANUNCIO
Re: ¿Cómo implemento usando JSL?Hola Jim,
Muchas gracias por su respuesta detallada. Te lo agradezco, déjame intentarlo y te lo haré saber.
Saludos,
ANUNCIO
Re: ¿Cómo implemento usando JSL?Aquí hay un script simple que genera las tablas y los resultados que desea

Names Default To Here( 1 );
//dt = Current Data Table();
dt = New Table( "Example",
Add Rows( 18 ),
New Column( "Case",
Character,
"Nominal",
Set Values(
{"A", "A", "A", "B", "B", "B", "C", "C", "C", "D", "D", "D", "E", "E",
"E", "F", "F", "F"}
)
),
New Column( "x1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[1.61428690437666, 10.1190080125253, 6.73662807021899, 8.01466805846589,
6.68158041069847, 5.7112128821412, 2.84688009253613, 8.24143884561082,
7.93797713835799, 7.60500406538651, 6.10376724167353, 7.49901866647003,
6.75689551558008, 8.47900118679714, 8.31129239105815, 2.25776032554558,
3.47918899345697, 7.54113635144146]
)
),
New Column( "x2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[5.47938474920207, 6.18766439511594, -6.23767012529314, 2.09002457182833,
4.8113689086524, 7.03651072603935, -3.04550198990374, 11.8452893346908,
-3.05733149292515, 1.30049361512582, 1.01507442873964, 2.09317649939774,
7.41286830274582, 7.34393706953047, 6.35773586672512, 6.45581826439945,
14.9562095399741, 10.0634660675686]
)
),
New Column( "x3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[11.2656869903562, 2.97417375436776, 2.7691367152201, 9.75641926280114,
9.70879299538533, 7.16035571615696, 9.79872763007834, 2.99361815483094,
7.34989095258795, 11.8347155967071, 13.840944548243, 6.91213509473278,
12.9829334337807, 4.69016477226892, 6.5541527241742, 10.449257706405,
8.71860875295487, 2.75703552707507]
)
),
New Column( "y1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0.0000000021187715823, 0.0000000007070458434, 0.0000000021305415897,
0.000000002187751479, 0.0000000015163549964, 0.0000000006662765716,
0.0000000013568530851, 0.0000000022185225971, 0.0000000008126367887,
0.0000000014370349256, 0.0000000025500410724, 0.0000000019674810787,
-0.0000000005869971784, 1.82706897276242e-10, 0.0000000014877347984,
6.66831811738687e-11, 0.000000001044052589, 0.0000000019169076496]
)
),
New Column( "y2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values(
[0.0000000111634035809, 0.0000000150934383918, 0.0000000092632031811,
0.0000000014897580792, 0.0000000129447047918, 0.0000000038471184132,
0.000000020378302554, 0.0000000084939824652, 0.0000000306867238143,
0.0000000083704926078, -0.0000000019845073029, 0.0000000221987482462,
-1.12731592825071e-10, 0.0000000341691546291, 0.0000000243189078007,
0.0000000142112672565, 0.0000000157219085064, 0.0000000163609065787]
)
),
New Column( "y3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values(
[0.0000001356080410826, 0.0000003110230604448, 0.0000000731675260394,
0.0000000683020170167, 0.0000000166660984052, 0.0000001245784167858,
0.0000001917424143272, 0.0000000592217777822, 0.0000000682651021339,
0.0000001310868753601, 0.0000000929550618751, 0.0000001752103336127,
0.0000000988598859477, 0.0000000990272186345, 0.000000121745118966,
0.0000001243361078368, 0.0000001992144095096, 0.000000090951358824]
)
)
);
// Create the Median Table
dtSumm = dt << Summary(
Group( :Case ),
Median( :x1 ),
Median( :x2 ),
Median( :x3 ),
Median( :y1 ),
Median( :y2 ),
Median( :y3 ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" ),
Link to original data table( 0 )
);
dtStack = dtSumm << Stack(
columns( :x1, :x2, :x3, :y1, :y2, :y3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Name( "Non-stacked columns" )(Keep( :Case )),
Number of Series( 2 ),
Contiguous
);
// Clean Up data table
dtStack << delete columns( {"Label", "Label 2"} );
dtStack:Data << set name( "x1_x2_x3" );
dtStack:Data 2 << set name( "y1_y2_y3" );
Biv = dtStack << Bivariate(
Y( :y1_y2_y3 ),
X( :x1_x2_x3 ),
Fit Where(
:Case == "A",
Fit Special( yTran( "Log" ), {Line Color( "Dark Green" )} )
),
Fit Where(
:Case == "B",
Fit Special( yTran( "Log" ), {Line Color( "Medium Dark Red" )} )
),
Fit Where( :Case == "C", Fit Special( yTran( "Log" ), {Line Color( "Black" )} ) ),
Fit Where(
:Case == "D",
Fit Special( yTran( "Log" ), {Line Color( "Magenta" )} )
),
Fit Where( :Case == "E", Fit Special( yTran( "Log" ), {Line Color( "Blue" )} ) ),
Fit Where(
:Case == "F",
Fit Special( yTran( "Log" ), {Line Color( "Medium Dark Cyan" )} )
),
SendToReport(
Dispatch(
{},
"1",
ScaleBox,
{Min( 2.318802 ), Max( 6.35577464892554 ), Inc( 0.5 ), Minor Ticks( 1 ),
Add Ref Line( 0.526, "Solid", "Black", "yref_1", 1 ),
Add Ref Line( 1.21, "Solid", "Black", "yref_2", 1 ),
Add Ref Line( 2.421, "Solid", "Black", "yref_3", 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
),
Dispatch(
{},
"2",
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 11, 0 ), Min( 0.0000000003 ),
Max( 0.00001144934215806 ), Inc( 1 ), Minor Ticks( 1 ),
Add Ref Line( 0.000000579, "Solid", "Black", "x_ref3", 1 ),
Add Ref Line( 0.000000053, "Solid", "Black", "x_ref2", 1 ),
Add Ref Line( 0.0000000075, "Solid", "Black", "xref_1", 1 ),
Label Row( {Show Major Grid( 1 ), Show Minor Grid( 1 )} )}
),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{DispatchSeg( Line Seg( 1 ), {Line Color( "Dark Green" )} ),
DispatchSeg( Line Seg( 6 ), {Line Color( "Medium Dark Red" )} ),
DispatchSeg( Line Seg( 11 ), {Line Color( "Black" )} ),
DispatchSeg( Line Seg( 16 ), {Line Color( "Magenta" )} ),
DispatchSeg( Line Seg( 21 ), {Line Color( "Blue" )} ),
DispatchSeg( Line Seg( 26 ), {Line Color( "Medium Dark Cyan" )} )}
)
)
);Re: ¿Cómo implemento usando JSL?Hola Jim,
¿Cómo selecciono un estilo de marcador diferente (*, z, x etc.) y un color de marcador (rojo / azul) para cada Caso (A / B / C) y lo implemento usando JSL? Puedo asignar manualmente un estilo y color de marcador a cada fila en la tabla JMP apilada, pero ¿se puede hacer fácilmente en JSL?