Re : Comment ajouter une ligne horizontale dynamique par axe y partagé parmi le graphique de variabilité divisé par deux conditions via JSLRe : Comment ajouter une ligne horizontale dynamique par axe y partagé parmi le graphique de variabilité divisé par deux conditions via JSLLa chose à garder à l'esprit à propos du VariabilityPlot est que chaque groupe le moins significatif a une largeur d'exactement 1 sur l'axe des x caché, en commençant à zéro.Il est donc assez simple d'ajouter les lignes pertinentes.
La seule petite complication consiste à déterminer le nombre de sous-groupes que contient chacun des groupes les plus importants, mais la fonction Résumé du tableau de données peut vous aider.
Voici un exemple de script qui fait ce que vous demandez :

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 : Comment ajouter une ligne horizontale dynamique par axe y partagé parmi le graphique de variabilité divisé par deux conditions via JSLSalut,
Tout d'abord, merci beaucoup pour les informations ainsi que pour le code, j'essaie d'aller ligne par ligne et d'apprendre comment vous avez écrit cela. Lorsque j'ai exécuté le script, j'obtiens une erreur pour la ligne "cagegories << Get Keys", semble-t-il via le journal de la console. Sauriez-vous comment résoudre ce problème ou s'il s'agit d'une autre variable ?


Merci, j'apprécie l'aide!
Re : Comment ajouter une ligne horizontale dynamique par axe y partagé parmi le graphique de variabilité divisé par deux conditions via JSLDésolé pour ça - je n'avais que partiellement changé les noms de variables.Le nom catégories aurait du être Nombres .J'ai édité par réponse ci-dessus.
Comment ajouter une ligne horizontale dynamique par axe y partagé parmi un graphique de variabilité divisé par deux conditions via JSLSalut tout le monde,
J'ai créé un graphique de variabilité divisé par deux conditions. Ce faisant, jmp crée un graphique avec un axe y partagé. Mon problème avec cet axe y partagé est que lorsque j'ajoute une ligne horizontale, il l'ajoute sur chaque division x plutôt que de pouvoir avoir une ligne horizontale différente par groupe. Je me demandais si cela était possible grâce à une valeur possible pour chaque boucle. Je souhaite que la ligne horizontale soit une valeur de la table de données d'origine.
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 )
);
C’est idéalement à quoi j’aimerais que cela ressemble en fonction de la valeur du tableau.
Ma tentative actuelle est la suivante :
for each( {bygroup, i}, value,
report(dt[i])[AxisBox(1)] << add ref line(value[i], "Dotted","Black", Char(value[i]))Par souci de pouvoir le faire avec cet ensemble de données, si vous pouvez utiliser la colonne ":Wt" pour montrer cela, je vous serais vraiment reconnaissant. Merci!
Mélange et nettoyage des donnéesIngénierie Qualité et Procédés