Ich möchte einen Listbox-Plot ähnlich dem folgenden Skript erhalten, jedoch mit einem anderen Datenformat. Meine Daten ähneln eher der folgenden Tabelle, in der sich alle darzustellenden Daten in den ersten beiden Spalten befinden. Ich möchte, dass der Listenteil im Listenfeld die Testanzahl darstellt. Wenn ich auf eine Testanzahl klicke, wird ein Diagramm für Vorwärts- und Rückwärtsbewegung erstellt. Es sieht so aus, als wäre dies mit einem bivariaten Diagramm unter Verwendung der By-Eingabe möglich ... Bivariat (I1, V1, nach Sweep-Typ, nach Testanzahl).
Ist das möglich und könnte ich eine Anleitung bekommen, wie ich das zum Laufen bringen kann? Ich bin ein JMP-Neuling und weiß nicht ganz, wo ich anfangen soll.
Mein Datenformat
| V1 | I1 | Testanzahl | Sweep-Typ |
| 0 | 0 | 1 | Nach vorne |
| 1 | .1 | 1 | Nach vorne |
| 2 | .2 | 1 | Nach vorne |
| 0 | 0 | 1 | Umkehren |
| -1 | -.1 | 1 | Umkehren |
| -2 | -.2 | 1 | Umkehren |
| 0 | 0 | 2 | Nach vorne |
| 1 | .1 | 2 | Nach vorne |
| 2 | .2 | 2 | Nach vorne |
Listbox-Beispiel aus Beispieldaten
// Listbox_Graphs.jsl
// Display one graph at a time using a listbox to select which one
names default to here(1);
dt = open("$sample_data\CrimeData.jmp", invisible);
xcol = "Year";
ycols = {"Population", "Total Rate", "Violent Rate", "Property Rate", "Murder Rate",
"Rape Rate", "Robbery Rate", "Agg-Aslt Rate", "Burglary Rate", "Larceny Rate",
"MVTheft Rate", "Murder", "Rape", "Robbery", "Agg-Aslt", "Burglary", "Larceny",
"MVTheft", "Total", "Violent", "Property", "Latitude", "Longitude"};
gb_expr = {};
for(i = 1, i <= nitems(ycols), i++,
ycol = ycols[i];
// Define an array of graph builder expressions, one for each y column
one_expr = evalinsert(
"\[gb_expr[^i^] = expr(
dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :Name( "^xcol^" ) ), Y( :Name( "^ycol^" ) ) ),
Elements( Points( X, Y, Legend( 5 ) ), Smoother( X, Y, Legend( 6 ) ) )
),
);
]\");
eval(parse(one_expr));
);
// Code to run when a different y variable is selected
y_list_expr = expr(
y_mtx = y_lb << get selected indices;
y_i = y_mtx[1];
hlb << delete;
vlb << append(
hlb = hlistbox(
eval(gb_expr[y_i])
)
);
);
gw = new window("Graphical Output",
hlistbox(
panel box(
xcol || " vs:",
y_lb = list box(ycols,
width(250),
nlines(20),
max selected(1),
y_list_expr,
)
),
panel box("Graph",
vlb = vlistbox(
hlb = hlistbox(
eval(gb_expr[1]),
)
)
)
)
);
y_lb << set selected(1);
Das Festlegen einer anderen Seite hat perfekt funktioniert. Danke schön!
Möglicherweise möchten Sie auch die Verwendung der Response Screening-Plattform in Betracht ziehen.Es wird eine zusammenfassende Datentabelle generiert, die die Analyseergebnisse in der Reihenfolge ihrer Signifikanz enthält.Durch die Auswahl eines oder mehrerer Parameter und die anschließende Ausführung eines der bereitgestellten Tabellenskripts werden die Streudiagramme mithilfe von „Y nach X anpassen“ erstellt.Daher sind alle in „Y nach X anpassen“ verfügbaren analytischen Tests für die ausgewählten Parameter verfügbar.
Names Default To Here( 1 );
dt = Current Data Table();
Response Screening(
Y( :V1, :I1 ),
X( :Test Count, :Sweep Type ),
PValues Table on Launch( 1 )
);

Ich bin mir nicht sicher, was Sie mit der Aufteilung der Achse meinen. Möglicherweise können Sie eine neue Spalte mit zusätzlicher Gruppierung erstellen und diese als anderen lokalen Datenfilter oder beispielsweise als Seite verwenden
Edit: Habe den Kommentar zweimal gepostet. Entschuldigung.
Das könnte funktionieren. Gibt es eine Möglichkeit, die Achse aufzuteilen? Die realen Daten weisen einen viel größeren Spannungs- und Strombereich auf
Funktionell ist das ein toller Anfang. Vielen Dank für Ihre Hilfe!
Vielleicht würde die Verwendung eines lokalen Datenfilters ausreichen? Ändern Sie den Modellierungstyp „Testanzahl“ in „Ordinal“ oder „Nominal“, dann erhalten Sie etwa Folgendes:

Von JMP erstelltes Skript:
Graph Builder(
Size(536, 491),
Show Control Panel(0),
Variables(X(:V1), Y(:I1), Group X(:Test Count), Group X(:Sweep Type)),
Elements(Points(X, Y, Legend(46)), Smoother(X, Y, Legend(47))),
Local Data Filter(
Add Filter(
columns(:Test Count),
Where(:Test Count == 1),
Display(:Test Count, N Items(2), "List Display")
)
)
)
Bearbeiten:
Skript mit Beispieldatentabelle
Mehr sehen...