Graph Builder: Ändern Sie die Linienbreite des Parallelplots, wenn eine Farbvariable vorhanden istHallo zusammen,
Ich mache einen Parallelplot und verwende eine Variable, um die Linien einzufärben. Ich verwende zum Beispiel das folgende Skript mit der Big Class-Tabelle:
obj = Graph Builder(
Size( 636, 660 ),
Variables( X( :height ), X( :weight, Position( 1 ) ), Color( :age ) ),
Elements( Parallel( X( 1 ), X( 2 ), Legend( 3 ) ) )
);
Dann möchte ich die Breite der Linie ändern. Ich habe versucht, Folgendes auszuführen:
frame = Report( obj )[FrameBox(1 )];
seg = frame << Find Seg( "Polyline Seg" );
seg << Set Line Width(3);
Es wurden jedoch nur die Zeilen geändert, die mit der ersten Ebene meiner Farbvariablen verknüpft sind (Alter in diesem Beispiel).
Wie kann ich alle Zeilen gleichzeitig ändern? Sollte ich die Dispatch-Funktion verwenden, wenn ich das Diagramm erstelle? Allerdings weiß ich nicht wirklich, wie ich damit umgehen soll, da ich nicht im Voraus weiß, wie viele Stufen die Variable „Farbe“ hat.
Vielen Dank im Voraus für Ihre Hilfe!
MassenanpassungBetreff: Graph Builder: Ändern Sie die Breitenlinie des parallelen Diagramms, wenn eine Farbvariable vorhanden istIch bin mir nicht sicher, warum Ihr Code nicht wie für Sie vorgesehen funktioniert. Es funktioniert bei mir (JMP 15 für Mac).
Ein alternativer Ansatz ist die Verwendung von Xpath.
(obj << xpath( "//PolylineSeg" )) << Set Line Width( 3 );
Betreff: Graph Builder: Ändern Sie die Breitenlinie des parallelen Diagramms, wenn eine Farbvariable vorhanden istHallo Ann,
Basierend auf einigen Experimenten, die ich durchgeführt habe, möchte ich zunächst sicherstellen, dass Ihr Problem mit der Legende auf der GB-Handlungslinie selbst liegt. In diesem Fall ist mir aufgefallen, dass beim manuellen Ändern der Linienbreite im Menü Anpassen auch die Legenden nicht korrekt aktualisiert werden. Daher scheint dies ein Fehler zu sein.
Wenn Sie jedoch die Linienbreite in der Legende einzeln manuell ändern, werden sowohl die Kurven als auch die Legende aktualisiert.
Der entsprechende Code (für ein aus dem GB-Skript entferntes Legendenelement) lautet wie folgt:
obj << SendToReport( Dispatch( {}, "400", ScaleBox, {Legend Model (3, Properties (2, {Line Width (3)}, Itemd ID ("14", 1) ) )}));
Um die Legendenelemente (dh das Alter) zu durchlaufen, habe ich mir den folgenden "hässlichen" Code ausgedacht:
Names Default to Here (1);
dt = current data table ();
dts = dt << Summary(
Group( :age ),
Freq( "None" ),
Weight( "None" ),
invisible
);
dlist = Column (dts, "age") << get values;
Close (dts, NoSave);
show (dlist);
obj = dt << Graph Builder(
Size( 636, 660 ),
Variables( X( :height ), X( :weight, Position( 1 ) ), Color( :age ) ),
Elements( Parallel( X( 1 ), X( 2 ), Legend( 3 ) ) )
);
objr = obj << report;
//frame = objr [FrameBox(1 )]; NO LONGER NEEDED
//seg = frame << Find Seg( "Polyline Seg" ); NO LONGER NEEDED
//seg << Set Line Width(6); NO LONGER NEEDED
For (i = 0, i < N Items (dlist), i++,
obj << SendToReport( Dispatch( {}, "400", ScaleBox, {Legend Model (3, Properties (i, {Line Width (12)}, Itemd ID (dlist [i], 1) ) )}))
);
Betreff: Graph Builder: Linienbreite eines Paralleldiagramms ändern, wenn eine Farbvariable vorhanden istDanke @ms und @Thierry_S für eure Antworten!
Mein Ziel ist es tatsächlich, die Linienbreite des Diagramms und nicht nur der Legende zu ändern.
Ich wähle die Lösung von @ms, da sie etwas kürzer ist, aber beide funktionieren wunderbar!:)