Generatore di grafici Dimensioni frame JSLCiao a tutti,
Questa potrebbe essere una soluzione semplice e veloce. Ma faccio un po’ fatica a trovare il modo giusto per farlo.
Sto cercando di capire come avere dimensioni del fotogramma coerenti con tutti i grafici nel generatore di grafici e impostazioni della legenda coerenti. Eseguo un ciclo FOR con valori numerici alla fine della tabella dati. Potrebbe variare da 1 a molte colonne e provo a tracciare tutte le colonne sull'asse Y.
La discrepanza principale si verifica quando l'asse Y ha un solo parametro, quella legenda non viene visualizzata ma avendo 2 o più parametri, la legenda viene visualizzata automaticamente e non devo scrivere un comando JSL separato per esso. Per questo motivo, ogni grafico appare diverso a causa della mancanza di spazio nelle impostazioni della legenda.
Qualche idea su come risolvere questo problema?
Grazie
Ri: Generatore di grafici Dimensioni frame JSLGrafici con dimensioni del fotogramma corrispondenti?E' possibile con Jmp?
Ho chiesto al supporto Jmp (TS- 00076249) e ho ottenuto la risposta:
Sì, direi che è possibile, ma potrebbe essere necessario un bel po' di scripting per ottenere questo risultato per tutti i possibili grafici che desideri realizzare, soprattutto se stai parlando del Costruttore di grafici.
Per tenere conto della risoluzione dello schermo del monitor attualmente in uso, è possibile accedere a una dll di Windows che restituirà la risoluzione del monitor.Puoi usarlo per ridimensionare le specifiche della dimensione dei pixel come desideri.Tuttavia, se si lavora in un ambiente con più monitor in cui ogni monitor può avere una risoluzione diversa, diventa praticamente impossibile tenere conto della risoluzione perché non c'è modo di sapere su quale monitor si trova il grafico.
Ok, allora, come?
È davvero così complicato generare grafici con dimensioni corrispondenti?
Caso d'uso:
Utilizziamo PowerPoint per presentare le nostre analisi Jmp.
Per ottenere transizioni fluide da una pagina all'altra, vogliamo creare tutti i grafici con la stessa dimensione del frame (stessa dimensione per il riquadro esterno delle sottotrame NxM di una pagina - senza assi) e la stessa dimensione del carattere degli assi e X/Y etichette di gruppo.
Ri: Generatore di grafici Dimensioni frame JSLHo anche iniziato con la speranza che una qualche combinazione di
Fit to Window( "Off" ),
E
Size(...)
potrebbe risolvere il problema.
Ma quando ho capito che nel Codice di @ErraticAttack vengono utilizzate entrambe le funzioni, la mia speranza era svanita.
Nell'esempio, le diverse etichette X portano a dimensioni del grafico completamente diverse.
Finché non c'è un rettangolo attorno all'intero grafico (compresi gli assi), nessuno noterà che entrambi hanno la stessa dimensione.
Stesso problema con diverse dimensioni dell'asse 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" )} )
)
)
)
)
Ri: Generatore di grafici Dimensioni frame JSLSo che è successo molto tempo fa, ma stavamo combattendo lo stesso problema qualche mese fa e abbiamo pensato a questo:
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;L'"adattamento alla finestra" è stato fondamentale per ottenere che i grafici di output avessero esattamente la dimensione giusta.
Ri: Generatore di grafici Dimensioni frame JSLQualche aggiornamento qui?
sembra un candidato per Tiny Traps in Jmp e JSL

verde: "Taglia"
blu: dimensione del telaio
viola: dimensione del grafico
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" )}
)
)
)));
Ri: Generatore di grafici Dimensioni frame JSLQuesto è l'opposto di quello che voglio: ho bisogno di FrameBox() solo per essere la dimensione specificata.Ecco qualche esempio di codice che illustra questo.IL Taglia (500, 500) viene dato in pasto ad entrambi, ma chiaramente il FrameBox() la dimensione non è molto (500, 500) .
In effetti, non è nemmeno il GraphBuilderContainerBox() che mostri che è impostato sulla dimensione specificata: devi prima rimuovere il file LegendBox() , quindi il resto (titolo/assi/intestazioni degli assi) viene impostato su (500.500) misurare.È semplicemente ridicolo!
Non c'è letteralmente alcun modo per impostare il file FrameBox() (come in, se avessi questo entro un Riquadro di contorno( "", Costruttore di grafici( ...) ) e lo ha fatto Riquadro contorno[Riquadro cornice( 1 )] << Dimensione cornice( 500, 500 )) PRIMA / DURANTE l'istanziazione del Costruttore di grafici() scatola.Può essere fatto SOLO dopo che la finestra e il grafico sono stati creati.
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 )}
)
)
)
)
)Ciò di cui ho bisogno è che l'area con il grafico (the FrameBox() ) per avere una determinata dimensione fissa, indipendentemente dalla dimensione del mio asse o da quanto complicato e lungo sia il testo.

Ri: Generatore di grafici Dimensioni frame JSLL'elemento Size imposta la dimensione del Frame(FrameBox()).

Non imposta GraphBuilderContainerBox()

Che è ciò per cui immagino ti aspettassi che fosse impostata la dimensione.
Ri: Generatore di grafici Dimensioni frame JSLQuesto non funziona.La DIMENSIONE DELLA CORNICE dipende dalla dimensione della legenda/aree di testo attorno alla CORNICE.
Ri: Generatore di grafici Dimensioni frame JSL@vishwasanj
L'argomento size e i relativi parametri possono essere utilizzati per definire e limitare la dimensione delle finestre, come mostrato nell'esempio seguente.
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: Generatore di grafici Dimensione del frame JSLHo espresso un desiderio:
Funzionalità per generare grafici con dimensioni di grafico specifiche
vediamo...
Ri: Generatore di grafici Dimensioni frame JSLCiao Vishwasanj,
Anche io riscontro questo problema. Condividi la mia soluzione con te anche se potrebbe non essere un modo efficiente.
Per semplicità spiego solo l'asse X (direzione orizzontale).
Dato che la dimensione del Framebox di un modello standard è 500, la dimensione dell'intero grafico è 535. Ciò significa che la nostra dimensione che non appartiene a Framebox è 35.
Quindi, abbiamo un grafico generato da alcuni cicli for, dopo aver assegnato framesize=500, Wholesize=550.
Quindi, considerando che questo grafico verrà esportato come png di dimensione totale fissa, se abbiamo lo stesso rapporto tra dimensione del fotogramma e dimensione intera, possiamo avere la stessa dimensione del fotogramma.
Vale a dire che possiamo aggiungere "dx" al grafico precedente per ottenere lo stesso rapporto.
500:535=(500+dx):(550+dx+dx2),
dove dx2 è l'aumento della lunghezza dell'asse dopo l'applicazione di dx.
Tuttavia, secondo la mia esperienza, dx2 è sostanzialmente trascurabile.
Pertanto, possiamo ridimensionare le immagini di larghezza 550 con frame size=500+dx, dove
500:535=(500+dx):(550+dx).
Dopo l'esportazione come PNG di dimensioni simili, possiamo avere immagini delle stesse dimensioni del fotogramma.Ri: Generatore di grafici Dimensioni frame JSLDai un'occhiata al mio post, spero che possa aiutarti.Re: Dimensione frame del generatore di grafici JSLnuovo collegamento al desiderio (quello vecchio sembra non funzionare):
Funzionalità per generare grafici con dimensioni di grafico specifiche
nel frattempo il desiderio ha raccolto 15 Kudos:)
Re: Dimensione del frame del generatore di grafici JSLora abbiamo 26 Kudos.