Istruzione If all'interno del generatore di grafici per la funzionalità SendToReportCIAO,
Voglio essere in grado di modificare l'asse Y del grafico solo quando l'asse Y è una determinata colonna (ad esempio errori). Ma sembra che il graphbuilder non riconosca il if al suo interno. Tuttavia, funziona bene quando non utilizzo l'istruzione if. Ma voglio essere in grado di utilizzare questa stessa funzione grafica per tutti i tipi di grafici.
graph_func = function({stackdt,title},{Default Local},
gb = Graph Builder(
Size( 1342, 905 ),
Variables(
X( :names ),
Y( as column(title) ),
Group X( :Type ),
Overlay( :GROUPs )
),
Elements( Box Plot( X, Y, Legend( 11 ) ) ),
Local Data Filter(
Add Filter(
columns( :Type),
Display( :Type, Size( 160, 30 ), List Display )
) ),
if(contains(title,"error"),
SendToReport(
Dispatch(
{},
title,
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 10 ), Min( 0.00001 ), Max( 0.03 ),
Inc( 1 ), Minor Ticks( 1 )}
)
) , ) );
return(gb);
);Ri: Istruzione If all'interno del generatore di grafici per la funzionalità SendToReport
Non è possibile fornire il JSL o l'intero grafico a causa della politica sulla privacy dell'azienda, ma ecco come appare l'asse X. Sono presenti 3 gruppi sull'asse Y del gruppo ed errori sull'asse Y. Voglio essere in grado di vedere tutti i punti intermedi sull'asse y e non solo il minimo e il massimo come è.
Inoltre, quando divido un gruppo diverso in base alla pagina, ciò si applica solo al primo grafico e non al successivo.
Ri: Istruzione If all'interno del generatore di grafici per la funzionalità SendToReportPotresti fornire il tuo JSL e un'immagine dell'output del display.
Ri: Istruzione If all'interno del generatore di grafici per la funzionalità SendToReportGrazie per la risposta. Ho provato la seconda soluzione perché sembrava semplice con quello che sto facendo. Funziona ma l'asse Y ora ha solo 2 punti, ovvero minimo e massimo. Come faccio a visualizzare la scala su Yaxis?Ri: Istruzione If all'interno del generatore di grafici per la funzionalità SendToReportUn modo più semplice per farlo è passare messaggi agli oggetti di visualizzazione creati dal Costruttore di grafici.I messaggi possono essere passati dopo la produzione del grafico.Tutti questi messaggi sono documentati nell'indice degli script
Aiuto==>Indice degli script
e quindi cercare l'oggetto AxisBox
Ecco una modifica al tuo codice che dovrebbe funzionare
graph_func = Function( {stackdt, title},
{Default Local},
gb = Graph Builder(
Size( 1342, 905 ),
Variables( X( :names ), Y( As Column( title ) ), Group X( :Type ), Overlay( :GROUPs ) ),
Elements( Box Plot( X, Y, Legend( 11 ) ) ),
Local Data Filter( Add Filter( columns( :Type ), Display( :Type, Size( 160, 30 ), List Display ) ) )
);
If( Contains( title, "error" ),
report(gb)[AxisBox(2)] << min(0.00001) << Max( 0.03 ) << Inc( 1 ) <<MINOR ticks=""></MINOR>Ri: Istruzione If all'interno del generatore di grafici per la funzionalità SendToReportCome ho accennato in altre discussioni, Send To Report() è pensato per consentire a JMP di salvare uno script per te e acquisire qualsiasi personalizzazione che potresti aver effettuato. Esistono modi migliori per personalizzare la tua finestra quando scrivi uno script. Per esempio,
gb = dt << Graph Builder( /* usual plot arguments */ );
If( error plot,
Report( gb )[AxisBox(1)] << Min( 0 ) << Max( 10 ) << Inc( 1 );
);
Vorrei avviare il Costruttore di grafici con la personalizzazione predefinita (non per tracciare errori). Avrei un modo per contrassegnare l'eccezione (errori di tracciamento) e utilizzare la funzione If() per determinare se i messaggi devono essere inviati all'oggetto. Nell'esempio precedente, l'argomento del grafico degli errori potrebbe essere un flag (variabile booleana) o un'espressione che restituisce true quando si tracciano gli errori. I messaggi vengono inviati all'asse verticale in questo caso per modificare la scala. Puoi utilizzare questa illustrazione per creare qualsiasi personalizzazione che ti piace.