Générateur de graphiques Taille du cadre JSLSalut tout le monde,
Cela pourrait être une solution simple et rapide. Mais j'ai un peu de mal à trouver la bonne façon de procéder.
J'essaie de comprendre comment avoir une taille de cadre cohérente avec tous les graphiques dans le générateur de graphiques et des paramètres de légende cohérents. J'exécute une boucle FOR ayant des valeurs numériques à la fin du tableau de données. Cela peut aller de 1 à plusieurs colonnes et j'essaie de tracer toutes les colonnes sur l'axe Y.
La principale différence se produit lorsque l'axe Y n'a qu'un seul paramètre, que la légende n'apparaît pas mais qu'elle a 2 paramètres ou plus, la légende s'affiche automatiquement et je n'ai pas besoin d'écrire une commande JSL distincte pour cela. Pour cette raison, chaque graphique semble différent en raison du manque d’espace dans les paramètres de légende.
Une idée sur la façon de résoudre ce problème ?
Merci
Re : Générateur de graphiques Taille du cadre JSLDes graphiques avec une taille de cadre correspondante ?Est-ce possible dans Jmp ?
J'ai demandé au support Jmp (TS-00076249) et j'ai obtenu la réponse :
Oui, je dirais que c'est possible, mais cela peut nécessiter pas mal de script pour accomplir cela pour tous les graphiques possibles que vous souhaitez créer - surtout si vous parlez de Graph Builder.
Pour tenir compte de la résolution d'affichage du moniteur actuellement utilisé, vous pouvez accéder à une DLL Windows qui renverra la résolution du moniteur.Vous pouvez l'utiliser pour mettre à l'échelle vos spécifications de taille de pixel comme vous le souhaitez.Cependant, si vous travaillez dans un environnement à plusieurs moniteurs où chaque moniteur peut avoir une résolution différente, il devient pratiquement impossible de prendre en compte la résolution car il n'y a aucun moyen de savoir sur quel moniteur se trouve votre graphique.
OK, alors comment ?
Est-ce vraiment si compliqué de générer des graphiques avec des tailles correspondantes ?
Cas d'utilisation:
Nous utilisons PowerPoint pour présenter nos analyses Jmp.
Pour obtenir des transitions fluides de page en page, nous souhaitons créer tous les graphiques avec la même taille de cadre (même taille pour le cadre extérieur des sous-traces NxM d'une page - sans axes) et la même taille de police des axes et X/Y. étiquettes de groupe.
Re : Générateur de graphiques Taille du cadre JSLJ'ai aussi commencé avec l'espoir qu'une combinaison de
Fit to Window( "Off" ),
et
Size(...)
pourrait résoudre le problème.
Mais quand j'ai réalisé que dans le Code de @ErraticAttack les deux fonctions sont utilisées, mon espoir était parti.
Dans l’exemple, les différentes étiquettes X conduisent à des tailles de graphique complètement différentes.
Tant qu'il n'y a pas de rectangle autour de tout le graphique (y compris les axes), personne ne remarquera que les deux ont la même taille.
Même problème avec différentes tailles de l'axe Y :

Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Cars.jmp" );
New Window( "TEST",
V List Box(
Graph Builder(
Size( 500, 200 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Fit to Window( "Off" ),
Variables( X( :Make ), Y( :Wt ) ),
Elements( Bar( X, Y ) )
)
,
Graph Builder(
Size( 500, 200 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Fit to Window( "Off" ),
Variables( X( :Make ), Y( :Wt ) ),
Elements( Bar( X, Y, Legend( 1 ) ) ),
SendToReport(
Dispatch( {}, "Wt", ScaleBox, {Format( "Engineering SI", 12 )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "Weight" )} )
)
)
)
)
Re : Générateur de graphiques Taille du cadre JSLJe sais que c'était il y a longtemps, mais nous étions confrontés à ce même problème il y a quelques mois et avons trouvé ceci :
Names Default to Here( 1 );
win = Get Window List();
// find graph builder windows
graphs = Filter Each({w}, win,
If(Length(w << XPath("//OutlineBox[@helpKey='Graph Builder']")) > 0, 1, 0)
);
// get the last Graph Builder
last_gb = graphs[N Items(graphs)][OutlineBox("Graph Builder")] << Get Scriptable Object;
// set size
last_gb << Fit to Window("Off");
// last_gb << Show Control Panel( 0 );
last_gb << Size(1000,800);
// copy picture
frame = (graphs[N Items(graphs)] << XPath( "//GraphBuilderBox" ))[1];
frame << Copy Picture;"Ajuster à la fenêtre" était essentiel pour que les tracés de sortie aient exactement la bonne taille.
Re : Générateur de graphiques Taille du cadre JSLUne mise à jour ici ?
on dirait un candidat pour Petits pièges dans Jmp et JSL
Re : Générateur de graphiques Taille du cadre JSLC'est le contraire de ce que je veux : j'ai besoin du FrameBox() seulement pour avoir la taille spécifiée.Voici un exemple de code illustrant cela.Le Taille (500, 500) est nourri aux deux, mais il est clair que le FrameBox() la taille n'est vraiment pas (500, 500) .
En fait, ce n'est même pas le GraphBuilderContainerBox() que vous montrez et qui est défini sur la taille donnée -- vous devez d'abord supprimer le LégendeBox() , puis le reste (titre / axes / en-têtes d'axes) est défini sur le (500 500) taille.C'est juste ridicule !
Il n'y a littéralement aucun moyen de définir le FrameBox() (comme dans, si vous aviez cela dans un délai d'un Boîte de contour( "", Générateur de graphiques( ... ) ) et a fait Boîte de contour[Boîte de cadre (1)] << Taille du cadre (500, 500)) AVANT / PENDANT l'instanciation du GraphBuilder() boîte.Cela ne peut être fait qu'après la création de la fenêtre et du graphique.
Names Default To Here( 1 );
Open( "$SAMPLE_DATA/Cars.jmp" );
New Window( "TEST",
H List Box(
Graph Builder(
Size( 500, 500 ),
Show Control Panel( 0 ),
Fit to Window( "Off" ),
Variables(
X( :Make ),
X( :Model, Position( 1 ) ),
X( :Year, Position( 1 ) ),
X( :Protection, Position( 1 ) ),
X( :"D/P"n, Position( 1 ) ),
X( :Size, Position( 1 ) ),
X( :Doors, Position( 1 ) ),
Y( :Wt ),
Color( :Model )
),
Elements(
Bar(
X( 1 ),
X( 2 ),
X( 3 ),
X( 4 ),
X( 5 ),
X( 6 ),
X( 7 ),
Y,
Legend( 9 )
)
)
)
,
Graph Builder(
Size( 500, 500 ),
Show Control Panel( 0 ),
Fit to Window( "Off" ),
Variables( X( :Make ), Y( :Wt ) ),
Elements( Bar( X, Y, Legend( 11 ), Error Interval( "Standard Error" ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Grid Line Order( 1 ), Reference Line Order( 2 )}
)
)
)
)
)Ce dont j'ai besoin, c'est de la zone contenant le graphique (le FrameBox() ) avoir une taille fixe donnée, indépendamment de la taille de mon axe ou de la complexité et de la longueur du texte.

Re : Générateur de graphiques Taille du cadre JSLL'élément Size définit la taille du Frame(FrameBox()).

Il ne définit pas GraphBuilderContainerBox()

C'est pour cela que je suppose que vous vous attendiez à ce que la taille soit définie.
Re : Générateur de graphiques Taille du cadre JSLCela ne fonctionne pas.La TAILLE DU FRAME dépend de la taille des zones de légende/texte autour du FRAME.
Re : Générateur de graphiques Taille du cadre JSL@vishwasanj
L'argument size et leurs paramètres peuvent être utilisés pour définir et limiter la taille de vos fenêtres comme le montre l'exemple ci-dessous.
Graph Builder(
Size( 1230, 650 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Y( :weight ) ),
Elements( Position( 1, 1 ), Line( X, Y, Legend( 1 ) ) ),
Elements( Position( 1, 2 ), Bar( X, Y, Legend( 2 ) ) )
)