Gesperrte Spalten bringen das Skript durcheinanderIch unterrichte Outlier-Box-Plots und habe ein Skript geschrieben, um die gesamte Länge des Whiskers zu addieren, damit ich meiner Klasse visuell zeigen kann, wie die Whiskers berechnet werden. Das Skript funktioniert großartig, es sei denn, meine Spalten sind gesperrt. Warum wirkt sich das Sperren der Spalten auf mein Skript aus? Nachdem das Skript ausgeführt wurde, habe ich das Skript in einem Skriptfenster gespeichert und es ist korrekt, aber bei einigen Gruppen werden die Whisker nicht herausgezogen. Hier ist mein Skript, ich arbeite noch daran, ich verwende JMP Pro 17.0.0 auf einem 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>Mac OSBetreff: Gesperrte Spalten bringen das Skript durcheinanderKönnten Sie einige Beispiele nennen? Bilder oder Datensatz, wo es passiert. Ich bin mir nicht sicher, warum sich gesperrte Spalten auf grafische Skripte auswirken würden, aber Sie müssen möglicherweise den „Index“ der Zeilen ändern, um bei 0 statt bei 1 zu beginnen
(1 und 2)

(0 und 1)

Betreff: Gesperrte Spalten bringen das Skript durcheinander
Im ersten sind keine Linien gezeichnet, aber wenn ich mir das Skript für dieses ansehe, zeigt es, dass es solche haben sollte. Nummer 7 als Lücke und 3 ist falsch. Hier ist das Skript für genau diese Handlung. Beachten Sie, dass die roten Linien nicht mit dem Gezeichneten übereinstimmen. Ich habe meine JMP-Datei angehängt, die ich dafür verwendet habe:
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 );
)}
)
)
);Betreff: Gesperrte Spalten bringen das Skript durcheinanderWenn ich die Tabelle, die ich Ihnen gesendet habe, in eine neue Tabelle ohne gesperrte Spalten kopiere, funktioniert es. Wie ändern Sie den „Index“ der Zeile? Ich habe andere Dateien mit gesperrten Spalten und sie funktionieren auch nicht.
Betreff: Gesperrte Spalten bringen das Skript durcheinanderDie Linien sind um eins verschoben (ich glaube, bei Nominal-/Ordinaldaten beginnt die X-Achse bei 0).


Sie können diesen Teil Ihres Skripts ändern
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]));
);
)
);
);
Am einfachsten ist es wahrscheinlich, i-1 innerhalb der V-Linie (Expr()) hinzuzufügen.
Betreff: Gesperrte Spalten bringen das Skript durcheinanderIch habe versucht, meine nominale Spalte in numerisch/kontinuierlich zu ändern, um zu sehen, ob es funktionieren würde, aber das hat nicht funktioniert. Das Einzige, was funktionieren würde, wäre, es in eine andere Tabelle zu kopieren, weshalb ich davon ausging, dass es sich um die gesperrten Spalten handelte. Ich bin mir nicht sicher, warum es nicht funktioniert hat, aber als ich eine if-Anweisung hinzugefügt habe, um herauszufinden, ob der Modellierungstyp nominal oder kontinuierlich ist, und Ihren Vorschlag hinzugefügt habe, hat es funktioniert. Ich bin also immer noch verwirrt, aber es funktioniert. Danke schön! Ich glaube nicht, dass ich das herausgefunden hätte, da ich versucht habe, es in numerisch/kontinuierlich umzuwandeln, und es hat nicht funktioniert.