Ajout de plusieurs zones de graphique à une seule fenêtre sans qu'elles copient l'ajout le plus récentJ'essaie de créer une fenêtre contenant plusieurs zones de graphique ajoutées pour aider à visualiser les données que je traite.La configuration que j'ai est similaire à celle-ci.
thisWindow = new window("Test Window");
for(x = 1, x <=nitems(thingsToDraw), x++,
thisWindow << append(
graph box(
(setup of X and Y axis, scales and such)
(for loops that create dynamic shapes in the graph box)
);
);
);Le problème est que chaque fois qu'il ajoute une nouvelle boîte de graphique, il modifie toutes les boîtes de graphique précédentes pour correspondre à la nouvelle.Je suis sûr qu'il existe un moyen d'isoler les boîtes de graphique afin qu'elles cessent de se mettre à jour après en avoir ajouté de nouvelles, mais je n'arrive pas à comprendre.Si je rends les boîtes toutes uniques par dimensionnement et configuration, elles ne semblent pas se copier.Mais cela va à l'encontre du but de la boucle et de la raison pour laquelle j'essaie de les créer en premier lieu.J'ai essayé de le configurer en tant que fonction et de l'appeler, ainsi que de le configurer en tant qu'expression évaluée à la volée.Les deux résultats sont les mêmes.
J'utilise JMP 14.
Re : Ajouter plusieurs zones de graphique à une seule fenêtre sans qu'elles copient l'ajout le plus récentHa!C'est ce dont j'avais besoin.J'essayais de comprendre comment le copier d'une manière ou d'une autre car je pensais que ce serait plus facile, mais je ne pouvais pas trouver comment.Copier une image puis l'ajouter à un bloc d'image fonctionne parfaitement !Et je peux saisir uniquement la zone graphique elle-même sans les étiquettes d'axe et autres pour l'image, ce qui améliore ce que j'essaie de faire.
Merci!
Re : Ajouter plusieurs zones de graphique à une seule fenêtre sans qu'elles copient l'ajout le plus récentCet exemple illustre l'approche que j'ai suggérée.
Names Default to Here( 1 );
nw = New Window( "Multiple Plots",
vlb = V List Box()
);
a = [ 1, 2, 3, 4 ];
b = [ 2, 4, 6, 8 ];
c = [ 4, 3, 2, 1 ];
d = [ 8, 6, 4, 2 ];
For( plot = 1, plot <= N Row( a ), plot++,
Eval(
Substitute(
Expr(
vlb << Append(
Graph Box(
X Scale( -6, 6),
Y Name( "Amplitude" ),
Y Scale( -10, 10 ),
Y Function( aa + bb * Sine( cc * x / dd ), x )
)
);
),
Expr( aa ), a[plot],
Expr( bb ), b[plot],
Expr( cc ), c[plot],
Expr( dd ), d[plot]
)
);
);Re : Ajouter plusieurs zones de graphique à une seule fenêtre sans qu'elles copient l'ajout le plus récentVoici une solution simple.Il ne copie pas le Graph Box() dans la fenêtre de sortie, mais copie plutôt une image de la boîte de graphique.
thisWindow = new window("Test Window");
for(x = 1, x <=nitems(thingsToDraw), x++,
thisWindow << append(
graph box(
(setup of X and Y axis, scales and such)
(for loops that create dynamic shapes in the graph box)
)<<GET picture=""></GET>Re : Ajouter plusieurs zones de graphique à une seule fenêtre sans qu'elles copient l'ajout le plus récentJe parie que tous vos scripts graphiques utilisent les mêmes variables et que vous modifiez la valeur de ces variables à chaque itération. Si tel est le cas, tous les tracés seront redessinés avec les nouvelles valeurs. Vous devez convertir la variable en une valeur littérale pour chaque script graphique.