Impostazione degli assi e dei titoli del grafico come variabiliCiao a tutti, novellino qui:
sto lavorando con una serie di dati in un processo che mi aspetto di ripetere molte volte, in quanto tale sto cercando di automatizzare la configurazione nel miglior modo possibile. Per il momento sto lavorando su alcune presentazioni di dati, e ho bisogno del tuo aiuto per rendere variabili i titoli degli assi di un grafico a seconda del contenuto delle celle.
ad esempio ho i seguenti dati:

da questi dati voglio tracciare un grafico che mostra "Res" per ogni valore "Col A", così come una serie di linee di riferimento che mostrano "Ref" (e le sue condizioni al contorno "+/-uref" e "rob" e le sue condizioni al contorno "+/- urob".
Attualmente lo script è il seguente:
dt = Current Data Table();
Graph Builder(
Size( 743, 472 ),
Show Control Panel( 0 ),
Variables(
X( :COLA, Order By( :Res, Ascending, Order Statistic( "Mean" ) ) ),
Y( :Res ),
Interval( :Ures )
),
Elements( Points( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
"COLA",
ScaleBox,
{Label Row(
{Label Orientation( "Vertical" ), Set Font Size( 12 ),
Set Font Style( "Italique" )}
)}
),
Dispatch(
{},
"Res",
ScaleBox,
{Min(), Max(), Inc(), Minor Ticks( 1 ),
Add Ref Line( dt[1, 11], "Solid", "Dark Blue", "", 1 ),
Add Ref Line( dt[1, 9], "Dotted", "Dark Blue", "", 1 ),
Add Ref Line( dt[1, 10], "Dotted", "Dark Blue", "", 1 ),
Add Ref Line( dt[1, 4], "Solid", "Dark Red", "", 1 ),
Add Ref Line( {dt[1, 7], dt[1, 8]}, "Solid", "Medium Dark Red", "", 1, 0.15 ),
Add Ref Line( dt[1, 7], "Dotted", "Dark Red", "", 1 ),
Add Ref Line( dt[1, 8], "Dotted", "Dark Red", "", 1 )}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "Analyte res" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "COLA" )} ),
Dispatch( {}, "Y title", TextEditBox, {Set Text( "Units of Res (g/m3)" )} ),
Dispatch( {}, "400", LegendBox, {Legend Position( {7, [-1, -3]} )} )
)
);
Che funziona bene ed è abbastanza flessibile da poter modificare le linee di riferimento nel grafico in base ai valori della cella come richiesto.
Ora, quello che mi piacerebbe è che anche i titoli potessero fare la stessa cosa delle linee di riferimento. Quindi idealmente potrei aggiungere una colonna iniziale nella mia tabella jmp, che chiameremo "info" che contiene le informazioni sull'analita studiato (nome, unità utilizzate per la misura, ecc...) e mi piacerebbe per il titolo del grafico (e assi) per estrarre le informazioni da queste celle (come stanno attualmente facendo le linee di riferimento) e utilizzare queste informazioni nel testo.
Ad esempio, se nella mia colonna "info" ho "Zr4+", vorrei che il grafico finale andasse a cercare questa cella e la usasse per etichettare se stesso o uno dei suoi assi. In modo tale che posso quindi cambiare la cella in "Br7-" e la prossima volta che eseguo lo script, il nuovo grafico sarà etichettato con "Br7-".
È possibile farlo?
punti bonus se la variabile può essere inserita in un testo più lungo, ad esempio l'asse y è "Zr 4+ (mg/l)" e poi cambia in "Br7- (mg/l)"
Personalizzazione di massafinestreOggetto: Impostare assi e titoli del grafico come variabiliGrazie per questo,
Farò come dici e leggerò la guida. In effetti, il mio lavoro con JSL è la prima volta che realizzo scripting/codifica nella mia vita, quindi ci sono molte logiche specifiche che devo ancora imparare!
Oggetto: Impostare assi e titoli del grafico come variabiliIl problema che sembra avere è come fornire a TextEditBox() l'elemento sintassi correttamente.
La specifica per Imposta testo, come si trova nell'indice di scripting, è:

Quindi, in sostanza, ciò che deve essere fornito è una "stringa".In JSL, praticamente qualsiasi cosa può essere inserita in una stringa.Dall'esempio nello script di esempio
gbr[TextEditBox(1)] << set text(column(dt,"info")[1]);
Il valore della prima riga della colonna "info" viene inviato a TextEditBox() e poiché la colonna "Indo" ha un tipo di carattere di modellazione, i valori in ogni cella sono una "stringa".
JSL consente la creazione di stringhe in molti modi diversi.Suggerisco caldamente di dedicare del tempo alla lettura della Guida allo scripting disponibile nella Libreria della documentazione di JMP, disponibile nel menu a discesa della Guida.
Ma per semplice illustrazione, se si desidera avere "Graph 5 Analysis Res, potrebbe essere semplicemente indicato come
gbr[TextEditBox(1)] << set text( "Graph 5 " || column(dt,"info")[1]);
Dove la stringa passata a TextEdibox() è una stringa creata dalla concatenazione della stringa "Graph 5 " con la stringa della cella della prima riga della colonna Info.
Oggetto: Impostare assi e titoli del grafico come variabiliCiao Jim,
Ho giocato un po' di più con la sceneggiatura ei titoli degli assi.
La soluzione che hai fornito funziona alla grande per le cose di base, mi chiedevo se esiste un modo per introdurre un elemento variabile e un elemento fisso nella parte "imposta testo".
Alla fine, dalla sceneggiatura su cui mi hai aiutato a lavorare sto estraendo tre o quattro grafici diversi, ora vorrei che il titolo di ogni grafico estraesse il testo da una cella e lo incorporasse in un altro testo (da un'altra cella o scritto direttamente in una sceneggiatura, non sono pignolo.
Per spiegarmi, attualmente il titolo del mio grafico finirà come "analyte res" (che è già molto avanti rispetto a dove ero prima), mi piacerebbe fare un ulteriore passo avanti e avere qualcosa come "graph 5: [Analyte res]" in modo tale che posso semplicemente cambiare la parte "analyte res" e cambierà il titolo. in modo simile sarebbe bello poter avere l'asse y etichettato come "[analita] [quantità misurata (massa, concentrazione, volume, ...)] [unità (g, mg/L, cm3... )]" in modo tale che io possa quindi modificare ciascuna delle tre variabili nelle celle scelte in base alle mie esigenze per ogni grafico diverso.
Ho giocato con il parametro "imposta testo" ma non sembra gradire un sistema misto come quello (o anche estrarre da più celle). quindi la mia soluzione alternativa più promettente è solo quella di aggiungere una casella di testo accanto al titolo e all'asse y, anche se ovviamente non è una soluzione elegante e sospetto che in alcuni casi devo stare attento a non indurre la sovrapposizione tra le due caselle di testo. ...
Qualche idea?
Oggetto: Impostare assi e titoli del grafico come variabili)Caro Jim, grazie per questo, funziona!
Oggetto: Impostare assi e titoli del grafico come variabiliHo aggiunto una nuova colonna Info alla tua tabella dati

E ho modificato il tuo script per usarlo per ottenere i valori per le etichette.Ho anche modificato il tuo script per utilizzare un modo più diretto per aggiungere le linee di riferimento al grafico.

Names Default To Here( 1 );
dt = Current Data Table();
gb = dt << Graph Builder(
Size( 743, 472 ),
Show Control Panel( 0 ),
Variables( X( :COLA, Order By( :Res, Ascending, Order Statistic( "Mean" ) ) ), Y( :Res ), Interval( :Ures ) ),
Elements( Points( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch( {}, "COLA", ScaleBox, {Label Row( {Label Orientation( "Vertical" ), Set Font Size( 12 ), Set Font Style( "Italique" )} )} ),
Dispatch( {}, "Res", ScaleBox, {Min(), Max(), Inc(), Minor Ticks( 1 )} ),
Dispatch( {}, "400", LegendBox, {Legend Position( {7, [-1, -3]} )} )
)
);
gbr = gb << report;
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 11], "Solid", "Dark Blue", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 9], "Dotted", "Dark Blue", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 10], "Dotted", "Dark Blue", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 4], "Solid", "Dark Red", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( {dt[1, 7], dt[1, 8]}, "Solid", "Medium Dark Red", "", 1, 0.15 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 7], "Dotted", "Dark Red", "", 1 );
gbr[AxisBox( 2 )] << Add Ref Line( dt[1, 8], "Dotted", "Dark Red", "", 1 );
gbr[TextEditBox(1)] << set text(column(dt,"info")[1]);
gbr[TextEditBox(3)] << set text(column(dt,"info")[2]);
gbr[TextEditBox(4)] << set text(column(dt,"info")[3]);