Ich arbeite derzeit an einem Dashboard für eine Fabrikproduktionshalle. Auf der einen Seite möchte ich in einem 3D-Streudiagramm zeigen, wie Löcher in den Rumpf oder das Flugzeug gebohrt werden. Auf der anderen Seite möchte ich die Startzeiten jedes Bohrvorgangs anzeigen, was im Grunde ein Streudiagramm mit einigen Kategorien auf der vertikalen Achse und kontinuierlicher Zeit auf der horizontalen Achse ist. In den Daten gibt es mehrere Flugzeugrümpfe, daher besteht der erste Schritt darin, einen auszuwählen. Nach der Auswahl verbirgt ein unsichtbarer Datenfilter andere Punkte und schließt sie aus. Dies funktioniert im Wesentlichen gut, aber ich bin auf ein Problem gestoßen, bei dem ich keine Ahnung habe, wie ich es beheben soll.
Es gibt mehrere Maschinen, die das Bohren durchführen. Ich möchte alle Punkte (sowohl im 3D-Streudiagramm als auch in der Zeitleiste) basierend auf den auf die Maschinen geladenen Jobprogrammen farblich kennzeichnen. Wenn ich dies tue, indem ich :Job-ID als Farbvariable* auswähle, stelle ich fest, dass die beiden Diagramme für jede :Job-ID unterschiedliche Farben verwenden. Wenn ich beispielsweise rote Punkte in der Zeitleiste auswähle, werden im 3D-Streudiagramm blaue Punkte ausgewählt.
How to make colors match between graphs?Wie kann man dafür sorgen, dass die Farben zwischen den Diagrammen übereinstimmen?
Ich frage mich, ob es eine Möglichkeit gibt, die Farben in beiden Diagrammen zu synchronisieren/abzustimmen. Alle Ideen sind willkommen. Ich bin völlig ratlos.
Entschuldigen Sie auch die Unschärfe. Ich bin nicht sicher, ob ich die tatsächlichen Zahlen zeigen darf, ich möchte nur auf Nummer sicher gehen.
Danke!
*: Das Zeitleistendiagramm, das aus einem Diagrammerstellungsfenster stammt, enthält:
timeline = Graph Builder(
Size( 1300, 600 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables(
X( :Start Time Stamp ),
X( :Load Time Stamp, Position( 1 ) ),
Y( :Side ),
Y( :Longitudinal Location, Position( 1 ) ),
Y( :Machine, Position( 1 ) ),
Color( :Job ID )
),
Elements( Points( X( 1 ), X( 2 ), Y( 1 ), Y( 2 ), Y( 3 ) ) ),
),
und das 3D-Streudiagramm hat:
scatter = Scatterplot 3D(
Y( :x, :y, :z ),
Coloring( :Job ID ),
Show Controls( 0 ),
Frame3D(
Set Graph Size( 500, 500 ),
Set Grab Handles( 0 ),
Set Rotation( -54, 0, 38 )
),
),Ich habe einen Teil des zusätzlichen Codes entfernt, den ich zum Löschen der Legenden, Festlegen der Achsenbegrenzungen usw. aus den obigen Skripten verwendet habe. Sie lenken ab.
txnelsons Idee ist ziemlich einfach und elegant. Ich habe der Spalte "Job-ID" Wertfarben hinzugefügt und dann im Menü "Zeilen" "Farbe oder Markierung nach Spalte" verwendet. Und sofort zeigten sich die Farben auf dem 3D-Streudiagramm.Das Zeitachsendiagramm erforderte etwas mehr Mühe, um die Farben anzupassen. Ich habe zwei Variablen in der horizontalen Achse verwendet und der Graph Builder weist automatisch Farben zu, aus welcher Spalte die Punkte stammen, und überschreibt die Zeilenfarbe aus der Tabelle. Aber sobald ich die Farbe ( : Job ID ) in den Graph Builder aufgenommen habe, passten alle Farben perfekt zusammen!
Ich kann dies jetzt leicht in ein Skript umwandeln, basierend auf dem, was ich aus der Antwort von vince_faller gelernt habe. Sie waren beide sehr hilfsbereit.
Danke euch beiden!
Sie können es im Handumdrehen mit machen
Names Default to Here(1);
dt = Open("$SAMPLE_DATA\Big Class.jmp");
//this will give you a legend
// the expression just makes it so it's live in both windows
legend = Expr(dt << Color By Column(:age));
//you have to make a custom report to show the proper legend
new window("Example",
Hlistbox(
bivariate(Y(:height), X(:weight),
Where(:age <= 14)
),
legend
),
Hlistbox(
bivariate(Y(:height), X(:weight),
Where(:age >= 13)
),
legend
)
);
Das sollte dir zumindest eine Vorstellung geben.
Wenn Sie die Spalteneigenschaft Wertfarben für :Job ID festlegen, verwenden sowohl ScatterPlot 3D als auch Graph Builder diese Farben.