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 ?
sonne comme un candidat pour Tiny Traps dans Jmp et JSL

vert : "Taille"
bleu : taille du cadre
violet : taille de la parcelle
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window("test",
H List Box(
Graph Builder(
Size( 500, 300 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables(
X( :name ),
X( :age, Position( 1 ) ),
X( :sex, Position( 1 ) ),
Y( :height ),
Group X( :sex )
),
Elements( Points( X( 1 ), X( 2 ), X( 3 ), Y) ),
SendToReport(
Dispatch( {}, {"height vs. name & 2 more"}, TextEditBox,
{Set Text( "my title\!nspans over 2 lines" )}
),
Dispatch( {}, {:height}, TextEditBox,
{Set Text( "very long Y axis title " ), Rotate Text( "Horizontal" )}
)
)
);,
Graph Builder(
Size( 500, 300 ),
Show Control Panel( 0 ),
Variables( X( :sex ), Y( :height ), Group X( :age ) ),
Elements( Points( X, Y ) ),
SendToReport(
Dispatch( {}, {:height}, TextEditBox,
{Set Text( "x" ), Rotate Text( "Horizontal" )}
)
)
)));
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 ) ) )
)
Re: Taille du cadre du générateur de graphiques JSLJ'ai formulé un souhait :
Fonctionnalité permettant de générer des graphiques avec une taille de graphique spécifique
Voyons ...
Re : Générateur de graphiques Taille du cadre JSLSalut Vishwasanj,
Je rencontre également ce problème. Partagez ma solution avec vous, même si ce n'est peut-être pas un moyen efficace.
Pour plus de simplicité, j'explique uniquement l'axe X (direction horizontale).
Étant donné que la taille d'un modèle Framebox standard est de 500, la taille du graphique entier est de 535. Cela signifie que nous avons une taille qui n'appartient pas à Framebox, soit 35.
Ensuite, nous avons un graphique généré par une partie d'une boucle for, après avoir attribué framesize=500, Wholesize=550.
Ensuite, étant donné que ces graphiques seront exportés sous forme de png de taille totale fixe, si nous avons le même rapport taille d'image/taille entière, nous pouvons avoir la même taille d'image.
C'est-à-dire que nous pouvons ajouter « dx » au graphique précédent pour rendre le rapport identique.
500:535=(500+dx):(550+dx+dx2),
où dx2 est l'augmentation de la longueur de l'axe après l'application de dx.
Cependant, d'après mon expérience, dx2 est fondamentalement négligeable.
Ainsi, nous pouvons redimensionner les images de 550 largeurs avec une taille de cadre = 500+dx, où
500:535=(500+dx) :(550+dx).
Après l'exportation au format png de taille similaire, nous pouvons avoir des photos de même taille de cadre.Re : Générateur de graphiques Taille du cadre JSLJetez un oeil à mon message, j'espère qu'il pourra vous aider.Re: Générateur de graphiques Taille de trame JSLnouveau lien vers le souhait (l'ancien semble être cassé) :
Fonctionnalité permettant de générer des tracés avec une taille de tracé spécifique
Pendant ce temps, le souhait a récolté 15 Kudos:)
Re: Taille du cadre du générateur de graphiques JSLNous avons maintenant 26 Kudos.