Wie bekomme ich die Container von Scatterplot 3D?Hallo,
Wenn ich Daten in einem Scatterplot 3D darstelle, wiederhole ich einige Aktionen häufig. Zum Beispiel ändere ich das Farbschema (Farbleiste), die Größe der Punkte usw. Tabellen sind unterschiedlich, aber Aktionen sind gleich und beziehen sich nicht auf bestimmte Spalten. Ich nehme an, die Aktionen können automatisiert werden.
Ich frage mich, wie man dies für Grafiken schreibt, die bereits geöffnet sind. Für 2D-Grahps kann ich zum Beispiel diesen Befehl verwenden, um auf den Container zu verweisen:
Window( Window name )[framebox( 1 )] << set background color( "gray" );
aber ich kann es nicht in einem Scatterplot 3D verwenden.
Vielen Dank,
David
Betreff: Wie bekomme ich die Container von Scatterplot 3D?Hallo @Perle ,
Scatterplot 3D verwendet eine Display3DBox, daher sollte dies funktionieren, um auf dieses Objekt zu verweisen und auf das, was Sie für die meisten Nachrichten verwenden (Festlegen von Wandfarben, Markierungen, Drehung, Drehung usw.):
Window( Window name )[Display3DBox(1)]
Wenn Sie die Hintergrundfarbe festlegen müssen, möchten Sie tatsächlich auf die SceneBox verweisen:
Window( Window name )[SceneBox(1)]<<BACKGROUND color=""></BACKGROUND>
Hier ist ein vollständiges Beispiel, in dem ich sowohl die Wände als auch den Hintergrund blau einstelle:
Open( "$SAMPLE_DATA\Big Class.jmp" );
s3d = Scatterplot 3D( Y( :age, :height, :weight ), Frame3D( Set Grab Handles( 0 ) ) );
//view properties if you wish to see options
//show properties(Window( "Big Class - Scatterplot 3D" )[SceneBox(1)])
//show properties(Window( "Big Class - Scatterplot 3D" )[Display3DBox(1)])
Window( "Big Class - Scatterplot 3D" )[Display3DBox( 1 )] << Set Wall Color( 5 );
Window( "Big Class - Scatterplot 3D" )[Scene Box( 1 )] << Background color( blue );
Ich hoffe das hilft!
@julianisch
Betreff: Wie bekomme ich die Container von Scatterplot 3D?Wenn Sie die Farben interaktiv ändern und das Skript speichern, zeichnet Scatterplot 3D die Farben direkt als Teil des Skripts auf:
Scatterplot 3D(
Y( :age, :height, :weight ),
Frame3D(
<STRONG>Set Wall Color( -16750758 ),</STRONG>
Set Grab Handles( 0 ),
Set Rotation( -52.9429431878029, -1.24217455677765, 22.838483399832 ),
<STRONG>Background Color( 144, 191, 4 )</STRONG>
)
);
Dies ist möglicherweise die einfachste Lösung, wenn Sie die gewünschten Farben beim Start der Plattform kennen.
Betreff: Wie bekomme ich die Container von Scatterplot 3D?Hallo @julianisch ,
Ich danke Ihnen sehr für Ihre Antwort. Display3DBox ist sehr nützlich, um viele Eigenschaften zu ändern.
Ich kann die Legende der Handlung jedoch immer noch nicht ändern. Wenn ich das Skript speichere, ist dies der Code, der unter SendToReport (Dispatch (...)) angezeigt wird.
obj = Scatterplot 3D(
Y( :x, :y, :z ),
Coloring( :T composed 2 ),
Legend( 84 ),
Frame3D( Legend( 1 ), Set Grab Handles( 0 ), Set Rotation( -54, 0, 38 ) ),
SendToReport(
Dispatch(
{},
"100",
ScaleBox,
{Legend Model( 3, Properties( 0, {gradient( {Color Theme( "Spectral" )} )} ) )}
)
);
);Möchten Sie einen ähnlichen Weg kennen, um auf diese Eigenschaften zuzugreifen? Fenster ( Fenstername ) [ Display3DBox ( 1 ) ] ?
Betreff: Wie bekomme ich die Container von Scatterplot 3D?Vielen Dank @danschikore Wie Sie sagen, ist die einfachste Lösung, die Standardeinstellungen in den Voreinstellungen zu ändern. Das Ändern der Eigenschaften in einem Skript könnte jedoch in Zukunft für mich nützlich sein.Betreff: Wie bekomme ich die Container von Scatterplot 3D?Hallo @Perle ,
Um der Plattform mitzuteilen, dass Optionen versendet werden sollen, benötigen Sie ein Handle für das skriptfähige Objekt (die Scatterplot 3D-Plattform selbst) und nicht für das Berichtsfenster. Wir können << Get Scriptable Object verwenden, um uns hier zu helfen. Sobald Sie dieses Handle haben, können Sie die genaue Versandnachricht senden, die Sie beim Speichern des Skripts gefunden haben. Hier ist ein vollständiges Beispiel dafür, einschließlich der vorherigen Anpassungen, die ich gezeigt habe:
Open( "$SAMPLE_DATA\Big Class.jmp" );
s3d = Scatterplot 3D( Y( :age, :height, :weight ), Coloring( :sex ), Legend( 17 ), Frame3D( Legend( 1 ) ) );
//view properties if you wish to see options
//show properties(Window( "Big Class - Scatterplot 3D" )[SceneBox(1)]);
//show properties(Window( "Big Class - Scatterplot 3D" )[Display3DBox(1)]);
//set colors, contolled in the report layer<BR />Window( "Big Class - Scatterplot 3D" )[Display3DBox( 1 )] << Set Wall Color( 5 );
Window( "Big Class - Scatterplot 3D" )[Scene Box( 1 )] << Background color( blue );
//find the scriptable object so that options can be dispatched
s3dFound = Window( "Big Class - Scatterplot 3D" )[Outline Box( 1 )] << Get Scriptable Object;
//Dispatch options by sending messages to that scriptable object
s3dFound << Dispatch(
{},
"100",
ScaleBox,
{Legend Model(
17,
Properties( 0, {Line Color( 73 ), Marker Size( 10 )}, Item ID( "F", 1 ) ),
Properties( 1, {Line Color( 45 ), Marker Size( 10 )}, Item ID( "M", 1 ) )
)}
);
@julianisch
Betreff: Wie bekomme ich die Container von Scatterplot 3D?Ich sollte hinzufügen, wenn Sie ein Skript verwenden, um die Ausgabe zu generieren, haben Sie bereits ein Handle für die Plattform (vorausgesetzt, Sie haben dies getan, als Sie die Plattform gestartet haben). In meinem Beispiel ist das s3d. Wenn Sie jedoch ein Fenster haben, das nicht von einem Skript generiert wird, können Sie mit << Get Scriptable Object ein Handle für diese Plattform erstellen.Betreff: Wie bekomme ich die Container von Scatterplot 3D?Vielen Dank @julianisch , das ist sehr interessant.