Comment obtenir les conteneurs de Scatterplot 3DSalut,
Lorsque je représente des données dans un Scatterplot 3D, je répète fréquemment certaines actions. Par exemple, je change le thème de couleur (barre de couleurs), la taille des points, etc. Les tableaux sont différents mais les actions sont identiques et ne font pas référence à des colonnes spécifiques. Je suppose donc que les actions peuvent être automatisées.
Je me demande comment créer un script pour les graphiques déjà ouverts. Pour 2d grahps je peux utiliser, par exemple, cette commande pour faire référence au conteneur:
Window( Window name )[framebox( 1 )] << set background color( "gray" );
mais je ne peux pas l'utiliser dans un Scatterplot 3D.
Je vous remercie,
David
Re: Comment puis-je obtenir les conteneurs de Scatterplot 3Dsalut @Perle ,
Scatterplot 3D utilise une Display3DBox, cela devrait donc servir à référencer cet objet et ce que vous utiliserez pour la plupart des messages (définition de la couleur du mur, des marqueurs, de la rotation, de la rotation, etc.):
Window( Window name )[Display3DBox(1)]
Si vous devez définir la couleur d'arrière-plan, vous souhaiterez en réalité référencer le SceneBox:
Window( Window name )[SceneBox(1)]<<BACKGROUND color=""></BACKGROUND>
Voici un exemple complet dans lequel je mets les murs et l’arrière-plan en bleu:
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 );
J'espère que ça aide!
@julien
Re: Comment puis-je obtenir les conteneurs de Scatterplot 3DSi vous modifiez les couleurs de manière interactive et enregistrez le script, Scatterplot 3D enregistre les couleurs directement dans le script:
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>
)
);
Cela pourrait être la solution la plus simple si vous connaissez les couleurs souhaitées lors du lancement de la plate-forme.
Re: Comment puis-je obtenir les conteneurs de Scatterplot 3Dsalut @julien ,
Merci beaucoup pour votre réponse. Display3DBox est très utile pour changer beaucoup de propriétés.
Cependant, je ne peux toujours pas changer la légende de l'intrigue. Si je sauvegarde le script, il s'agit du code, qui apparaît sous SendToReport (Dispatch (...))
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" )} )} ) )}
)
);
);Souhaitez-vous connaître un moyen d'accéder à ces propriétés similaires à La fenêtre ( Nom de la fenêtre ) [ Display3DBox ( 1 ) ] ?
Re: Comment puis-je obtenir les conteneurs de Scatterplot 3DJe vous remercie @danschikore Comme vous le dites, la solution la plus simple consiste à modifier les paramètres par défaut dans les préférences. Cependant, changer les propriétés d'un script pourrait m'être utile à l'avenir.Re: Comment puis-je obtenir les conteneurs de Scatterplot 3Dsalut @Perle ,
Pour indiquer à la plate-forme de répartir les options, vous aurez besoin d'un descripteur d'objet pouvant faire l'objet d'un script (la plate-forme 3d du scatterplot lui-même) plutôt que de la fenêtre de rapport. Nous pouvons utiliser << Obtenir un objet scriptable pour nous aider ici. Une fois que vous avez cette poignée, vous pouvez envoyer le message de répartition exact que vous avez trouvé lorsque vous avez enregistré le script. Voici un exemple complet de cela, y compris les personnalisations précédentes que j'ai montrées:
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 ) )
)}
);
@julien
Re: Comment puis-je obtenir les conteneurs de Scatterplot 3DJ'ajouterais que si vous utilisez un script pour générer la sortie, vous aurez déjà un descripteur de la plate-forme (en supposant que vous l'ayez fait lors du lancement de la plate-forme). Dans mon exemple, c'est s3d. Toutefois, si vous avez une fenêtre qui n'est pas générée par un script, utiliser << Get Scriptable Object vous permet d'établir un descripteur sur cette plate-forme.Re: Comment puis-je obtenir les conteneurs de Scatterplot 3DJe vous remercie @julien , c'est très intéressant.