Non è possibile modificare le dimensioni di FrameBox durante la creazione del report, ma solo quando sono state create tutte le caselle di visualizzazione E la finestra.Tutto,
Ho uno script con una funzione che crea un GraphBuilder. Viene poi compresso in riquadri di visualizzazione e inserito in una nuova finestra. In qualche modo, i comandi per modificare le dimensioni di FrameBox dall'interno della funzione vengono ignorati e posso modificarle solo quando viene creata la finestra. Perché? Vorrei che questa funzionalità fosse all'interno della funzione, in modo che produca un grafico che non richieda ulteriori modifiche. La modifica del titolo funziona dall'interno della funzione, perché non modificarne le dimensioni?
Ecco un esempio con 3 diversi tentativi di modificare le dimensioni di FrameBox: solo il terzo funziona.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
X_Parameter = "height";
Y_Parameter = "weight";
groupColumn = "sex";
titleText = "Example";
GBfunction= Function( {dt, X_parameter, Y_Parameter, groupByColumnString, titleText = ""},
groupByColumn = Column( dt, groupByColumnString );
cb = Context Box(
gb = Graph Builder(
Size( 350, 600 ),
Ignore Platform Preferences( 1 ),
Show Control Panel( 0 ),
Variables( X( Column( X_Parameter ) ), Y( Column( Y_Parameter ) ), Overlay( groupByColumn ) ),
);
rgb = gb << Report;
(rgbOB = ((rgb << XPath( "//OutlineBox[@helpKey = 'Graph Builder']" ))[1])) << Set Title( titleText );
//Attempt #1
(rgb << XPath( "(//OutlineBox//FrameBox)" )) << Frame Size( 350, 200 );
//Attempt #2
//(rgbOB << XPath( "//FrameBox" )) << Frame Size( 350, 200 );
);
Return( cb );
);
lub = Lineup Box( N Col( 3 ) );
lub << Append( GBfunction( dt, X_Parameter, Y_Parameter, groupColumn, titleText ) );
ob_group = Outline Box( "GB Function example: " || (dt << Get Name) );
ob_group << Append( lub );
nw = New Window( (dt << get name), ob_group );
//Attempt #3
rgb = ob_group << XPath( "//OutlineBox[@helpKey='Graph Builder']" );
//(rgb << XPath( "(//OutlineBox//FrameBox)" )) << Frame Size( 350, 200 );
Automazione e scriptingRe: Impossibile modificare le dimensioni di FrameBox durante la creazione di un report, solo quando sono state create tutte le caselle di visualizzazione E la finestra.Penso che modificare le dimensioni del frame non funzioni correttamente, poiché il frame non è ancora stato visualizzato, subentra un ridimensionamento automatico e potrebbero verificarsi anche dei problemi di temporizzazione.
Re: Impossibile modificare le dimensioni di FrameBox durante la creazione di un report, solo quando sono state create tutte le caselle di visualizzazione E la finestra.Ho provato a impostare lo stretching automatico su 0 e lo stretching su nessuno, ovviamente, non ha funzionato:(
Re: Impossibile modificare le dimensioni di FrameBox durante la creazione di un report, solo quando sono state create tutte le caselle di visualizzazione E la finestra.Capire cosa sta forzando una dimensione anomala non è sempre facile. C'è un motivo specifico per cui non utilizzi la funzione << Size di Graph Builder? So che a volte può richiedere alcuni calcoli preliminari, ad esempio quando si usano gruppi o wrap.
Scopri di più...
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
X_Parameter = "height";
Y_Parameter = "weight";
groupColumn = "sex";
titleText = "Example";
GBfunction = Function({dt, X_parameter, Y_Parameter, groupByColumnString, titleText = ""}, {Default Local},
groupByColumn = Column(dt, groupByColumnString);
cb = Context Box(
gb = dt << Graph Builder(
Size(100, 100),
Ignore Platform Preferences(1),
Show Control Panel(0),
//Fit To Window("Off"),
Variables(
X(Column(X_Parameter)),
Y(Column(Y_Parameter)),
Overlay(groupByColumn)
),
);
);
rgb = Report(gb);
(rgbOB = ((rgb << XPath("//OutlineBox[@helpKey = 'Graph Builder']"))[1])) << Set Title(titleText);
fbs = rgb << XPath("(//OutlineBox//FrameBox)");
gb << Size(400, 250);
Return(cb);
);
lub = Lineup Box(N Col(3));
lub << Append(GBfunction(dt, X_Parameter, Y_Parameter, groupColumn, titleText));
ob_group = Outline Box("GB Function example: " || (dt << Get Name));
ob_group << Append(lub);
nw = New Window((dt << get name), ob_group);
Re: Impossibile modificare le dimensioni di FrameBox durante la creazione di un report, solo quando sono state create tutte le caselle di visualizzazione E la finestra.Sì, c'è un motivo: devo imitare lo stesso aspetto e la stessa sensazione che avevo nelle precedenti iterazioni dello script che utilizzavano Fit Y by X.
GraphBuilder modificherà le dimensioni di FrameBox in base agli altri elementi nella casella di visualizzazione GB, ad esempio le dimensioni dell'asse o della legenda.
Alla fine, questi grafici verranno inseriti in un report in cui la dimensione dell'area del grafico (ovvero la funzione del FrameBox) dovrà essere coerente tra i diversi grafici del report. Ecco perché.
Re: Impossibile modificare le dimensioni di FrameBox durante la creazione di un report, solo quando sono state create tutte le caselle di visualizzazione E la finestra.Un'opzione potrebbe essere quella di creare prima la nuova finestra
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
X_Parameter = "height";
Y_Parameter = "weight";
groupColumn = "sex";
titleText = "Example";
GBfunction = Function({lub, dt, X_parameter, Y_Parameter, groupByColumnString, titleText = ""}, {Default Local},
cb = Context Box(
gb = dt << Graph Builder(
Size(600, 600),
Ignore Platform Preferences(1),
Show Control Panel(0),
Fit To Window("Off"),
Variables(X(Eval(X_Parameter)), Y(Eval(Y_Parameter)), Overlay(Eval(groupByColumnString))),
)
);
rgb = Report(gb);
lub << Append(cb);
(rgbOB = ((rgb << XPath("//OutlineBox[@helpKey = 'Graph Builder']"))[1])) <<
Set Title(titleText);
fbs = rgb << XPath("(//OutlineBox//FrameBox)");
fbs << Frame Size(400, 250);
);
lub = Lineup Box(N Col(3));
ob_group = Outline Box("GB Function example: " || (dt << Get Name));
ob_group << Append(lub);
nw = New Window((dt << get name), Window View("Invisible"), ob_group);
GBfunction(lub, dt, X_Parameter, Y_Parameter, groupColumn, titleText);
nw << Show Window(1);
Re: Impossibile modificare le dimensioni di FrameBox durante la creazione di un report, solo quando sono state create tutte le caselle di visualizzazione E la finestra.Il tuo esempio funziona così come è scritto. Tuttavia, quando provo a implementarlo nel mio script reale, alla fine ridimensiona FrameBox da Size(350, 600) a un valore diverso.
Fondamentalmente, ho LineUpBox per un motivo: genero diversi grafici in quel riquadro, e ogni terzo grafico (o per essere precisi, ogni grafico più a destra di ogni riga) ha la Legenda visualizzata (la stessa per tutti i grafici). Quindi, quando lo eseguo con tre grafici, la dimensione finale di tutti e tre i FrameBox risulta essere:
{{350, 220}, {350, 220}, {350, 240}}
invece di {350, 200} a cui sto cercando di ridimensionarlo o dei {350, 600} iniziali con cui GraphBuilder lo ha creato.
Più avanti proverò a fare un esempio pratico che contraddica il tuo suggerimento.
Re: Impossibile modificare le dimensioni di FrameBox durante la creazione di un report, solo quando sono state create tutte le caselle di visualizzazione E la finestra.Questo bug è sempre stato presente in GraphBuilder e non esiste una soluzione semplice. Ho un programma esterno che può inviare notifiche a JMP (è un server localhost che JMP avvia con runcommand) e gli mando un messaggio per inviare un ping a JMP entro 0,25 secondi; a quel pingback attiverò la forzatura della dimensione del frame, che ora avviene dopo che tutti i riquadri sono stati colorati.