Script de personalización de ajuste bivariado condicional basado en grupo por columnaHola, soy relativamente nuevo en JMP y estoy usando la plataforma de gráficos bivariados para generar una lista de gráficos bivariados a partir de un conjunto de datos. Comencé a usar un script JSL generado automáticamente para agregar configuraciones de eje y leyenda idénticas a todos los gráficos, como se ve a continuación:
Bivariate(
Y( :PeakValue ),
X( :"Duration (s)"n ),
By( :Checker Name ),
SendToReport(
Dispatch(
{},
"Duration (s)",
ScaleBox,
{Scale( "Log" ), Format( "Engineering SI", 9 ), Min( 0.0000000001 ),
Max( 0.001 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row(
{Show Major Grid( 1 ), Show Minor Grid( 1 ), Show Minor Labels( 0 )}
)}
),
Dispatch( {}, "PeakValue", ScaleBox, {Label Row( Show Major Grid( 1 ) )} ),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Marker Drawing Mode( "Normal" ),
Row Legend(
Corner,
Color( 1 ),
Color Theme( "JMP Default"(1) ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
Como puede ver arriba, estoy agrupando el conjunto de datos por la columna: Nombre del verificador. Sin embargo, quería ampliar este script agregando también objetos gráficos Rect() transparentes para crear rangos aceptables para cada uno de los diagramas de dispersión. Sin embargo, las dimensiones y la ubicación de estos objetos Rect() variarán según en qué gráfico bivariado se estén trazando. En resumen, necesito crear una clave de :Checker Name para las variables de tamaño Rect que se aplicarán correctamente según el parcela bivariada en el conjunto. ¿Es esto algo fácil/plausible de incorporar en el script pregenerado que tengo arriba?
¡Gracias!
Automatización y secuencias de comandosAnálisis y modelado de datos básicosLa personalización en masaRe: Script de personalización de ajuste bivariado condicional basado en grupo por columnaPuede intentar hacerlo de forma interactiva en JMP (lo más probable es que tenga que codificar los valores Rect() en cada diagrama de dispersión). Sugeriría usar JSL con un bucle.
Re: Script de personalización de ajuste bivariado condicional basado en grupo por columna¿Cómo recomendaría que divida la función Bivariada con By( :Checker Name ) en un bucle de Bivariadas con nombres únicos de Checker?
-Jacob
Re: Script de personalización de ajuste bivariado condicional basado en grupo por columnaGuarda la lista de referencias a una variable: biv = Bivariate(...). Puede iterar sobre la lista. Puede consultar los cuadros de esquema para determinar el nivel de variable Por, o usar la función Resumir() para obtener una lista de los grupos. Será en el mismo orden.
Re: Script de personalización de ajuste bivariado condicional basado en grupo por columnaEstoy considerando usar una matriz asociativa para asignar un objeto rect a cada clave posible en la columna Nombre del verificador. ¿Puede proporcionar un ejemplo de cómo iterar sobre una lista de cuadros de esquema y agregar un objeto rect() a cada uno? Tampoco estoy familiarizado con la función Resumir.
Re: Script de personalización de ajuste bivariado condicional basado en grupo por columnaSupongo que estás usando JMP18. Cuando usa By, obtiene una lista de plataformas y luego puede recorrerla. Luego solo se trata de descubrir cómo obtener el título y demás (o puedes usar Resumir y en ese caso construiría la lista de referencias de una manera un poco diferente). Si es difícil descifrar el bucle, primero puede crear una plataforma bivariada única y hacerla funcionar, luego expandirla a bucles.
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
aa_rect = Associative Array();
aa_rect["M"] = Expr(Rect(80, 60, 120, 55));
aa_rect["F"] = Expr(Rect(90, 65, 140, 55));
bivs = dt << Bivariate(Y(:height), X(:weight), By(:sex));
For Each({cur_biv}, bivs,
ob = Report(cur_biv)[OutlineBox(1)];
obtitle = ob << get title;
show(obtitle);
category = Word(-1, obtitle, "=");
fb = ob[FrameBox(1)];
Eval(EvalExpr(
fb << Add Graphics Script(
Pen Color("Blue");
Pen Size(2);
Expr(aa_rect[category]);
)
));
);
