Graph Builder Rahmengröße JSLHallo zusammen,
Dies könnte eine einfache und schnelle Lösung sein. Aber es fällt mir irgendwie schwer, den richtigen Weg zu finden.
Ich versuche herauszufinden, wie ich bei allen Diagrammen im Diagrammersteller eine einheitliche Rahmengröße und konsistente Legendeneinstellungen erreichen kann. Ich führe eine FOR-Schleife mit numerischen Werten am Ende der Datentabelle aus. Es kann zwischen einer und vielen Spalten liegen und ich versuche, alle Spalten auf der Y-Achse darzustellen.
Die Hauptdiskrepanz tritt auf, wenn die Y-Achse nur einen Parameter hat und diese Legende nicht angezeigt wird. Bei zwei oder mehr Parametern wird die Legende jedoch automatisch angezeigt und ich muss keinen separaten JSL-Befehl dafür schreiben. Aufgrund des Platzmangels in den Legendeneinstellungen sieht jedes Diagramm anders aus.
Irgendeine Idee, wie man das Problem lösen kann?
Danke
Betreff: Graph Builder Rahmengröße JSLDiagramme mit passender Rahmengröße?Ist das in Jmp möglich?
Ich habe den Jmp-Support (TS-00076249) gefragt und die Antwort erhalten:
Ja, ich würde sagen, es ist möglich, aber möglicherweise ist es erforderlich ziemlich viel Scripting um dies für alle möglichen Diagramme zu erreichen, die Sie erstellen möchten – insbesondere, wenn Sie über Graph Builder sprechen.
Um die Bildschirmauflösung des aktuell verwendeten Monitors zu berücksichtigen, können Sie auf eine Windows-DLL zugreifen, die die Auflösung des Monitors zurückgibt.Damit können Sie Ihre Pixelgrößenangaben beliebig skalieren.Wenn Sie jedoch in einer Umgebung mit mehreren Monitoren arbeiten, in der jeder Monitor eine andere Auflösung haben kann, ist es praktisch unmöglich, die Auflösung zu berücksichtigen, da nicht bekannt ist, auf welchem Monitor sich Ihr Diagramm befindet.
OK, also, wie?
Ist es wirklich so kompliziert, Diagramme mit passenden Größen zu erstellen?
Anwendungsfall:
Für die Präsentation unserer Jmp-Analysen nutzen wir PowerPoint.
Um sanfte Übergänge von Seite zu Seite zu erhalten, möchten wir alle Diagramme mit derselben Rahmengröße (gleiche Größe für den äußeren Rahmen der NxM-Unterplots einer Seite – ohne Achsen) und derselben Schriftgröße der Achsen und X/Y erstellen Gruppenbezeichnungen.
Betreff: Graph Builder Rahmengröße JSLIch begann auch mit der Hoffnung, dass eine Kombination aus
Fit to Window( "Off" ),
Und
Size(...)
könnte das Problem lösen.
Aber als mir klar wurde, dass im Kodex von @ErraticAttack Beide Funktionen werden genutzt. Meine Hoffnung war dahin.
Im Beispiel führen die unterschiedlichen X-Beschriftungen zu völlig unterschiedlichen Größen des Diagramms.
Solange es kein Rechteck um den gesamten Graphen (einschließlich der Achsen) gibt, wird niemand bemerken, dass beide die gleiche Größe haben.
Gleiches Problem mit unterschiedlichen Größen der Y-Achse:

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" )} )
)
)
)
)
Betreff: Graph Builder Rahmengröße JSLIch weiß, das ist lange her, aber wir hatten vor ein paar Monaten mit demselben Problem zu kämpfen und sind auf Folgendes gekommen:
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;Die Funktion „An Fenster anpassen“ war der Schlüssel dazu, dass die Ausgabediagramme genau die richtige Größe hatten.
Betreff: Graph Builder-Framegröße JSLGibt es hier Neuigkeiten?
klingt wie ein Kandidat für Tiny Traps in Jmp und JSL

grün: „Größe“
blau: Rahmengröße
lila: Grundstücksgröße
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" )}
)
)
)));
Betreff: Graph Builder Rahmengröße JSLDas ist das Gegenteil von dem, was ich will – ich brauche das FrameBox() nur um die angegebene Größe zu haben.Hier ist ein Beispielcode, der dies veranschaulicht.Der Größe (500, 500) wird beiden zugeführt, aber eindeutig die FrameBox() Größe ist sehr viel nicht (500, 500) .
Tatsächlich ist es nicht einmal das GraphBuilderContainerBox() dass Sie zeigen, dass es auf die angegebene Größe eingestellt ist – Sie müssen es zuerst entfernen LegendBox() , dann wird der Rest (Titel / Achsen / Achsenüberschriften) auf den gesetzt (500.500) Größe.Es ist einfach lächerlich!
Es gibt buchstäblich keine Möglichkeit, das einzustellen FrameBox() (wie in, wenn Sie dies innerhalb eines hätten Outline Box( "", Graph Builder( ... ) ) und tat es Outline Box[Frame Box( 1 )] << Frame Size( 500, 500 )) VOR/WÄHREND der Instanziierung des GraphBuilder() Kasten.Dies ist NUR möglich, nachdem das Fenster und das Diagramm erstellt wurden.
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 )}
)
)
)
)
)Was ich brauche, ist für den Bereich, in dem sich das Diagramm befindet (der FrameBox() ) eine bestimmte feste Größe haben, unabhängig davon, wie groß meine Achse ist oder wie kompliziert und lang der Text ist.

Betreff: Graph Builder Rahmengröße JSLDas Size-Element legt die Frame(FrameBox())-Größe fest.

Die GraphBuilderContainerBox() wird nicht festgelegt.

Ich vermute, dass Sie erwartet haben, dass die Größe eingestellt ist.
Betreff: Graph Builder Rahmengröße JSLDas funktioniert nicht.Die RAHMENGRÖSSE hängt von der Größe der Legenden-/Textbereiche rund um den RAHMEN ab.
Betreff: Graph Builder Rahmengröße JSL@vishwasanj
Das Größenargument und seine Parameter können verwendet werden, um die Größe Ihrer Fenster zu definieren und zu begrenzen, wie im folgenden Beispiel gezeigt.
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 ) ) )
)
Betreff: Graph Builder Framegröße JSLIch habe einen Wunsch eingereicht:
Funktionalität zum Generieren von Diagrammen mit spezifischer Diagrammgröße
mal sehen ...
Betreff: Graph Builder Rahmengröße JSLHallo vishwasanj,
Ich stoße auch auf dieses Problem. Teilen Sie meine Lösung mit Ihnen, auch wenn dies möglicherweise kein effizienter Weg ist.
Der Einfachheit halber erkläre ich nur die X-Achse (horizontale Richtung).
Da die Framebox-Größe einer Standardvorlage 500 beträgt, beträgt die Größe des gesamten Diagramms 535. Das heißt, wir haben die Größe 35, die nicht zur Framebox gehört.
Dann haben wir einen Graphen, der durch eine For-Schleife generiert wurde, nachdem Framesize = 500 und Wholesize = 550 zugewiesen wurden.
Wenn man dann bedenkt, dass diese Diagramme als PNG mit fester Gesamtgröße exportiert werden, können wir bei gleichem Verhältnis von Bildgröße zu Gesamtgröße die gleiche Bildgröße haben.
Das heißt, wir können „dx“ zum vorherigen Diagramm hinzufügen, um das Verhältnis gleich zu machen.
500:535=(500+dx):(550+dx+dx2),
Dabei ist dx2 die Achsenlängenzunahme nach der Anwendung von dx.
Allerdings ist dx2 meiner Erfahrung nach grundsätzlich vernachlässigbar.
Somit können wir die Größe der 550 breiten Bilder mit der Rahmengröße = 500 + dx ändern, wobei
500:535=(500+dx):(550+dx).
Nach dem Export als PNG ähnlicher Größe können wir Bilder mit derselben Rahmengröße haben.Betreff: Graph Builder Rahmengröße JSLSchauen Sie sich meinen Beitrag an, ich hoffe, er kann Ihnen helfen.Betreff: Graph Builder-Framegröße JSLneuer Link zum Wunsch (der alte scheint kaputt zu sein):
Funktionalität zum Generieren von Grundstücken mit spezifischer Grundstücksgröße
Inzwischen hat der Wunsch 15 Kudos gesammelt:)
Betreff: Graph Builder Framegröße JSLWir haben jetzt 26 Kudos.