Les colonnes verrouillées gâchent le scriptJ'enseigne les tracés de boîtes aberrantes et j'ai écrit un script pour ajouter toute la longueur de la moustache afin de pouvoir montrer visuellement à ma classe comment les moustaches sont calculées. Le script fonctionne très bien sauf si mes colonnes sont verrouillées. Pourquoi le verrouillage des colonnes aurait-il un impact sur mon script ? Une fois le script exécuté, j'ai enregistré le script dans une fenêtre de script et il est correct, mais il ne fera pas ressortir les moustaches de certains groupes. Voici mon script, je travaille toujours dessus, j'utilise JMP Pro 17.0.0 sur un MacBook :
Names Default To Here( 0 );
Clear Log();
dt = Current Data Table();
If( Not( Is Scriptable( dt ) ),
// Check that there is a data set open;
// ca=Caption("Please Open Design Data Set", Back Color(yellow));
// Stop();
dtsel = Pick File( "Open File", {"JMP|jmp", "All files|*"} );
If( dtsel == "",
Stop(),
Try( dt = Open( dtsel ), Stop() )
);
);
output = Expr(
dt2 = Data Table( dt ) << Summary(
Group( bycol ),
Median( nm ),
Interquartile Range( nm ),
Quantiles( 25, nm ),
Quantiles( 75, nm ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 )
);
columnnamemedian = Column( dt2, 3 ) << Get Name;
columnnamesample = Column( dt2, 2 ) << Get Name;
columnnamegroup = Column( dt2, 1 ) << Get Name;
columnameIQR = Column( dt2, 4 ) << Get Name;
columnname25 = Column( dt2, 5 ) << Get Name;
columnname75 = Column( dt2, 6 ) << Get Name;
Medians = Column( dt2, columnnamemedian ) << Get As Matrix;
Samplesize = Column( dt2, columnnamesample ) << Get As Matrix;
Groups = Column( dt2, columnnamegroup ) << Get As Matrix;
IQR = Column( dt2, columnameIQR ) << Get As Matrix;
Q25 = Column( dt2, columnname25 ) << Get As Matrix;
Q75 = Column( dt2, columnname75 ) << Get As Matrix;
meanno = N Rows( dt2 );
LWhis = {};
UWhis = {};
i = 1;
For( i = 1, i <= meanno, i++,
LWhis[i] = Q25[i] - 1.5 * IQR[i];
UWhis[i] = Q75[i] + 1.5 * IQR[i];
Show( Q25[i] );
Show( Q75[i] );
Show( LWhis[i] );
Show( UWhis[i] );
Show( IQR[i] );
Show( i );
If( LWhis[i] > Q25[i],
LWhis[i] = Q25[i],
LWhis[i] = LWhis[i]
);
If( UWhis[i] < Q75[i],
UWhis[i] = Q75[i],
UWhis[i] = UWhis[i]
);
);
MinLW = LWhis[1];
MaxUW = UWhis[1];
i = 1;
For( i = 1, i <= meanno, i++,
If( LWhis[i] < MinLW,
MinLW = LWhis[i],
MinLW = MinLW
);
If( UWhis[i] > MaxUW,
MaxUW = UWhis[i],
MaxUW = MaxUW
);
);
If( MinLW < 0,
MinLW = MinLW * 1.1,
MinLW = MinLW * 0.9
);
If( MaxUW < 0,
MaxUW = MaxUW * 0.9,
MaxUW = MaxUW * 1.1
);
Current Data Table( dt );
//Close(dt2, NoSave);
gb = Graph Builder(
Variables( X( (Column( bycol )) ), Y( Column( nm ) ) ),
Elements( Points( X, Y ), Box Plot( X, Y ) ),
SendToReport(
Dispatch( {} ),
),
);
gbr = gb << report;
Report( gb )[AxisBox( 2 )] << Max( MaxUW ) << Min( MinLW );
i = 1;
For( i = 1, i <= meanno, i++,
Show( LWhis[i] );
Show( UWhis[i] );
Eval(
Eval Expr(
gbr[Framebox( 1 )] << Add graphics Script(
Pen Color( Red );
Line Style( "Dotted" );
V Line( Expr( i ), Expr( LWhis[i] ), Expr( Q25[i] ) );
V Line( Expr( i ), Expr( Q75[i] ), Expr( UWhis[i] ) );
);
)
)
;
);
//dt2 << Minimize Window;
Close( dt2, Nosave );
);
w = New Window( "Variables",
<<MODAL></MODAL>macOSRe : Les colonnes verrouillées gâchent le scriptPourriez-vous donner quelques exemples ? Images ou ensemble de données où cela se produit. Je ne sais pas pourquoi les colonnes verrouillées affecteraient le script graphique, mais vous devrez peut-être modifier "l'index" des lignes pour qu'il commence à 0 au lieu de 1.
(1 et 2)

(0 et 1)

Re : Les colonnes verrouillées gâchent le script
Le premier n'a pas de lignes tracées, mais quand je regarde le script de celui-ci, cela montre qu'il devrait les avoir. le numéro 7 est un écart et le 3 est faux, voici le script de cette intrigue exacte, remarquez que les lignes rouges ne s'alignent pas avec ce qui est dessiné. J'ai joint mon fichier JMP que j'ai utilisé pour cela. :
Graph Builder(
Variables( X( :Process Configuration ), Y( :Y ) ),
Elements( Points( X, Y, Legend( 1 ) ), Box Plot( X, Y, Legend( 2 ) ) ),
SendToReport(
Dispatch(
{},
"Y",
ScaleBox,
{Min( 6.36165 ), Max( 36.07175 ), Inc( 5 ), Minor Ticks( 1 )}
),
Dispatch(
{},
"Graph Builder",
FrameBox,
{Add Graphics Script(
13,
Description( "" ),
Pen Color( Red );
Line Style( "Dotted" );
V Line( 1, 13.039, 18.502 );
V Line( 1, 22.144, 27.607 );
), Add Graphics Script(
14,
Description( "" ),
Pen Color( Red );
Line Style( "Dotted" );
V Line( 2, 7.0685, 16.061 );
V Line( 2, 22.056, 31.0485 );
), Add Graphics Script(
15,
Description( "" ),
Pen Color( Red );
Line Style( "Dotted" );
V Line( 3, 11.772, 17.973 );
V Line( 3, 22.107, 28.308 );
), Add Graphics Script(
16,
Description( "" ),
Pen Color( Red );
Line Style( "Dotted" );
V Line( 4, 14.0465, 18.737 );
V Line( 4, 21.864, 26.5545 );
), Add Graphics Script(
17,
Description( "" ),
Pen Color( Red );
Line Style( "Dotted" );
V Line( 5, 13.529, 18.002 );
V Line( 5, 20.984, 25.457 );
), Add Graphics Script(
18,
Description( "" ),
Pen Color( Red );
Line Style( "Dotted" );
V Line( 6, 8.0605, 17.335 );
V Line( 6, 23.518, 32.7925 );
), Add Graphics Script(
19,
Description( "" ),
Pen Color( Red );
Line Style( "Dotted" );
V Line( 7, 16.3455, 19.356 );
V Line( 7, 21.363, 24.3735 );
)}
)
)
);Re : Les colonnes verrouillées gâchent le scriptSi je copie le tableau que je vous ai envoyé dans un nouveau tableau sans colonnes verrouillées, cela fonctionne. Comment modifier "l'index" de la ligne ? J'ai d'autres fichiers avec des colonnes verrouillées et ils ne fonctionnent pas non plus.
Re : Les colonnes verrouillées gâchent le scriptLes lignes sont décalées de un (je pense qu'avec les données nominales/ordinales, l'axe X commence à 0


Vous pouvez modifier cette partie de votre script
For(i = 1, i <= meanno, i++,
Show(LWhis[i]);
Show(UWhis[i]);
Eval(
Eval Expr(
gbr[Framebox(1)] << Add graphics Script(
Pen Color(Red);
Line Style("Dotted");
V Line(Expr(i), Expr(LWhis[i]), Expr(Q25[i]));
V Line(Expr(i), Expr(Q75[i]), Expr(UWhis[i]));
);
)
);
);
Le plus simple est probablement d’ajouter i-1 à l’intérieur de la ligne V (Expr()).
Re : Les colonnes verrouillées gâchent le scriptJ'ai essayé de changer ma colonne nominale en numérique/continue pour voir si cela fonctionnerait et cela n'a pas fonctionné. La seule chose qui fonctionnerait était de le copier dans une autre table, c'est pourquoi j'ai supposé que c'étaient les colonnes verrouillées. Je ne sais pas pourquoi cela n'a pas fonctionné, mais lorsque j'ai ajouté une instruction if pour rechercher si le type de modélisation était nominal ou continu et ajouté votre suggestion, cela a fonctionné. Je suis donc toujours confus, mais je l'ai fait fonctionner. Merci! Je ne pense pas que j'aurais compris cela puisque j'ai essayé de le convertir en numérique/continu et cela n'a pas fonctionné.