Re: Cómo agregar una línea horizontal dinámica por eje y compartido entre un gráfico de variabilidad dividido por dos condiciones a través de JSLRe: Cómo agregar una línea horizontal dinámica por eje y compartido entre un gráfico de variabilidad dividido por dos condiciones a través de JSLLo que se debe tener en cuenta sobre VariabilityPlot es que cada grupo menos significativo tiene un ancho de exactamente 1 en el eje x oculto, comenzando en cero.Esto hace que sea bastante simple agregar las líneas relevantes.
La única pequeña complicación es calcular cuántos subgrupos contiene cada uno de los grupos más grandes, pero la función Resumen de la tabla de datos puede ayudar en eso.
Aquí hay un script de ejemplo que hace lo que pides:

names default to here(1);
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Cars.jmp" );
rpt = dt << Variability Chart(
Y( :Head IC),
X( :Make, :Model ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
Where( :NAME("D/P") == "Driver" & :Protection == "manual belts" ),
);
//find groupings:
rows = dt << Get Rows Where( :NAME("D/P") == "Driver" & :Protection == "manual belts" );
subt = dt << Subset( Rows( rows ), Columns( :Make, :Model, :Wt ), Not Linked, Private );
sumt = subt << Summary( Group( :Make, Model ), Mean( :Wt ), Statistics Column Name Format( "Column" ), Link to Original Data Table( 0 ), Private );
Close( subt, No Save );
subt = sumt << Summary( Group( :Make ), Mean( :Wt ), Statistics Column Name Format( "Column" ), Link to Original Data Table( 0 ), Private );
Close( sumt, No Save );
category number = [=>];
category average = [=>];
For Each Row( subt,
category number[:Make] = :N Rows; // each least-significant category in a VariabilityPlot is exactly X=1 width on the hidden x-axis, starting at zero
category average[:Make] = :Wt
);
Close( subt, No Save );
tree = rpt << Report;
Eval( Eval Expr(
tree[FrameBox( 1 )] << Add Graphics Script(
Local( {values = Expr( category average ), numbers = Expr( category number ), i, items, sum = 0},
items = categories << Get Keys;
Pen Size( 2 );
Pen Color( "Blue" );
Summation( i = 1, N Items( items ),
Line( Eval List( {sum, values[items[i]]} ), Eval List( {sum += categories[items[i]], values[items[i]]} ) );
0
)
)
)
) )Re: Cómo agregar una línea horizontal dinámica por eje y compartido entre un gráfico de variabilidad dividido por dos condiciones a través de JSLHola,
En primer lugar, muchas gracias por la información y el código. Estoy tratando de ir línea por línea y aprender cómo escribiste esto. Cuando ejecuté el script, aparece un error en la línea "cagegories << Get Keys" que aparece en el registro de la consola. ¿Sabrías cómo arreglar esto o si se supone que es otra variable?


Gracias, agradezco la ayuda!
Re: Cómo agregar una línea horizontal dinámica por eje y compartido entre un gráfico de variabilidad dividido por dos condiciones a través de JSLLo siento, solo cambié parcialmente los nombres de las variables.El nombre categorías debería haber sido números .He editado por respuesta anterior.
Cómo agregar una línea horizontal dinámica por eje y compartido entre el gráfico de variabilidad dividido por dos condiciones a través de JSLHola a todos,
He creado un gráfico de variabilidad que está dividido por dos condiciones; al hacerlo, jmp crea un gráfico con un eje y compartido. Mi problema con este eje y compartido es que cuando agrego una línea horizontal, la agrega en cada división x en lugar de poder tener una línea horizontal diferente por grupo. Me preguntaba si esto es posible mediante un posible bucle para cada bucle como valor. Quiero que la línea horizontal sea un valor de la tabla de datos original.
names default to here(1);
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Cars.jmp" );
dt << Variability Chart(
Y( :Head IC),
X( :Make, :Model ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Show Range Bars( 0 ),
Show Cell Means( 0 ),
Std Dev Chart( 0 ),
Points Jittered( 1 ),
By( :NAME("D/P"), :Protection )
);
Idealmente, así es como me gustaría que se viera según el valor de la tabla.
Mi intento actual de esto es:
for each( {bygroup, i}, value,
report(dt[i])[AxisBox(1)] << add ref line(value[i], "Dotted","Black", Char(value[i]))Para poder utilizar este conjunto de datos, si pudiera utilizar la columna ":Wt" para mostrar esto, se lo agradecería mucho. ¡Gracias!
Combinación y limpieza de datosIngeniería de Calidad y Procesos