Hallo,
Ich habe eine Datentabelle mit Hunderttausenden Zeilen.Es gibt eine Spalte mit der Lauf-ID, eine Spalte mit Gerätenamen (derzeit 29 von Interesse) und eine Spalte mit zugehörigen Werten.Für jeden Lauf gibt es also mehrere Geräte, die Daten aufzeichnen, und ich möchte für jedes Gerät Laufdiagramme mit der Lauf-ID als x-Achse erstellen.Allerdings habe ich zwei Probleme, die ich teilweise einzeln lösen kann, aber nicht gemeinsam lösen kann.
Erstens verwende ich JMP 13.Ich habe zwar Zugriff auf JMP 16, bin aber derzeit nicht installiert.Ich habe eine ganze Reihe bestehender Skripte, die ich nicht beschädigen möchte, indem ich auf eine andere Version von JMP umsteige, und was ich tun möchte sollen einfach zu machen sein.
Zweitens ist der allgemeine Ansatz, den ich verfolgen möchte, der folgende:
- Durchlaufen Sie die Liste eindeutiger Gerätenamen und erstellen Sie ein Laufdiagramm. Geben Sie in jedes einzelne Laufdiagramm Kontroll- und Spezifikationsgrenzen ein, die aus den Daten für jedes Gerät ermittelt wurden (ich kann die Kontroll- und Spezifikationsgrenzen problemlos in die Kontrolldiagramme eingeben).
- Fassen Sie alle Diagramme in einem neuen Fenster zusammen
Das Skript, das ich für die grafische Darstellung habe, lautet wie folgt:
curDev = devices[i]<BR />dt << Control Chart(
Sample Label( :ID ),
KSigma( 3 ),
Where( :DeviceName == curDev ),
Chart Col( Value, Levey Jennings(Avg(lims[4]), LCL(lims[3]), UCL(lims[5]) ) ), // lims list found separately
SendToReport(
Dispatch(
{"Levey Jennings of Value"},
curDev,
TextEditBox,
{Set Text( curDev )} // Ensures y-axis title is device name rather than column name of "Value"
)
)
);Dadurch werden mehrere Diagrammfenster erstellt, jedes mit einem Kästchen oben mit der Aufschrift „Where Device == curDev“.
Es können also Diagramme gezeichnet werden, wenn auch mit einer unnötigen und hässlichen Box, aber ich bekomme 29 Diagrammfenster geöffnet.
Jetzt muss ich sie alle in einem Fenster zusammenfassen und das obere Feld „Where Device ==“ entfernen.
Es gibt diese Antwort in den Foren, die meiner Meinung nach hilfreich wäre: So entfernen Sie „Where“ aus dem Berichtsfenster des Graph Builder – JMP-Benutzer-Community .Tatsächlich wird das Kästchen oben entfernt, wenn ich 29 einzelne Diagramme erzeuge, also:
Build_Chart = Function({var},
cco = dt << Control Chart(
Sample Label( :ID ),
KSigma( 3 ),
Where( :Value == curDev ),
Chart Col( :Value, Levey Jennings(Avg(lims[4]), LCL(lims[3]), UCL(lims[5]) ) ),
);
tp = Report(cco) << topparent;
tp[Textbox(1)] << delete;
);
for(i=1, i<=NItems(devices), i++,
curDev = devices[i]; //probably unnecessary
Build_Chart(curDev);
)Wenn ich jedoch versuche, das Gleiche zu tun, wie im verlinkten Forumsbeitrag beschrieben, erhalte ich ein Diagramm im Fenster und dann werden die Skriptfehler angezeigt „Send erwartet ein skriptfähiges Objekt{75240} beim Zugriff oder bei der Auswertung von ‚Send‘, tp[Text Box( 1 )] << delete/*###*/“
Build_Chart = Function({var},
// same function as above
)
pb = Panel Box();
for (i = 1, i<= NItems(devices), i++,
curDev = devices[i];
pb <<APPEND></APPEND>Warum funktioniert das Anhängen des Diagramms an eine Panel-Box mit dem tp << delete in der Build_Chart-Funktion nicht?
Ein anderer Ansatz, den ich ausprobiert habe, ist etwa der folgende, bei dem ich ein Berichtsobjekt erhalte:
nw = New Window("Charts",
lub = Lineup Box(NCol(2));
);
for (i = 1, i<= NItems(devices), i++,
curDev = devices[i];
cco = dtRecLog << Control Chart(
Sample Label( :ID ),
KSigma( 3 ),
Where( :Device == curDev ),
Chart Col( :Value, Levey Jennings(Avg(lims[4]), LCL(lims[3]), UCL(lims[5]) ) ),
);
rep = cco << Report;
lub << Append(rep);
);Dadurch wird das separate Fenster mit 29 Diagrammen ohne das Feld „Where ==“ erstellt, aber es Auch erzeugt 29 separate Diagrammfenster.cco << Fenster löschen funktioniert nicht, da cco kein Verweis auf ein Fenster ist.ICH könnte Führen Sie ein Fenster() <
Ich brauche also Hilfe bei Folgendem:
- Erstellen Sie ein Fenster mit allen Diagrammen ohne das Feld „Where :Device == curDev“ über dem Diagrammfenster
- Fassen Sie alle Diagramme in einem einzigen Fenster zusammen
- 29 verschiedene Fenster werden nicht angezeigt.
Vielen Dank im Voraus für Ihre Hilfe.
Ich glaube, dass Sie zu Ihrer Lösung gelangen können, indem Sie die Option „Unsichtbar“ in Ihrem Kontrolldiagramm verwenden und den Bericht dann an ein unabhängiges Journalfenster anhängen.Nachfolgend finden Sie eine Änderung Ihres Codes, die einen Ansatz hierfür veranschaulicht.Ich konnte das Skript nicht testen, da ich keine Beispieldatentabelle habe, aber ich glaube, dass Sie meinen Ansatz sehen können, von dem ich weiß, dass er funktionieren wird.
Build_Chart = Function({var},
cco = dt << Control Chart(invisible,
Sample Label( :ID ),
KSigma( 3 ),
Where( :Value == curDev ),
Chart Col( :Value, Levey Jennings(Avg(lims[4]), LCL(lims[3]), UCL(lims[5]) ) ),
);
tp = Report(cco) << topparent;
tp[Textbox(1)] << delete;
);
NW = New Window("Results",<<JOURNAL></JOURNAL>