Salve, sono relativamente nuovo a JMP e sto utilizzando la piattaforma dei grafici bivariati per generare un elenco di grafici bivariati da un set di dati. Ho iniziato a utilizzare uno script JSL generato automaticamente per aggiungere impostazioni identiche di assi e legenda a tutti i grafici, come mostrato di seguito:
Bivariate(
Y( :PeakValue ),
X( :"Duration (s)"n ),
By( :Checker Name ),
SendToReport(
Dispatch(
{},
"Duration (s)",
ScaleBox,
{Scale( "Log" ), Format( "Engineering SI", 9 ), Min( 0.0000000001 ),
Max( 0.001 ), Inc( 1 ), Minor Ticks( 1 ),
Label Row(
{Show Major Grid( 1 ), Show Minor Grid( 1 ), Show Minor Labels( 0 )}
)}
),
Dispatch( {}, "PeakValue", ScaleBox, {Label Row( Show Major Grid( 1 ) )} ),
Dispatch(
{},
"Bivar Plot",
FrameBox,
{Marker Drawing Mode( "Normal" ),
Row Legend(
Corner,
Color( 1 ),
Color Theme( "JMP Default"(1) ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
);
Come puoi vedere sopra, sto raggruppando il set di dati in base alla colonna:Checker Name. Tuttavia, volevo estendere questo script aggiungendo anche oggetti grafici trasparenti Rect() per creare intervalli accettabili in ciascuno dei grafici a dispersione. Tuttavia, le dimensioni e la posizione di questi oggetti Rect() varieranno a seconda del grafico bivariato in cui vengono tracciati. In breve, devo creare una chiave di :Checker Name per le variabili di dimensionamento di Rect che verranno applicate correttamente a seconda del trama bivariata nell'insieme. È qualcosa di facile/plausibile da incorporare nello script pregenerato che ho sopra?
Grazie!
Puoi provare a farlo in modo interattivo in JMP (molto probabilmente dovrai codificare i valori Rect() in ciascun grafico a dispersione). Suggerirei di utilizzare JSL con un loop.
Come mi consiglieresti di suddividere la funzione Bivariate con By( :Checker Name ) in un ciclo di Bivariate con nomi Checker univoci?
-Giacobbe
Salva l'elenco dei riferimenti a una variabile: biv = Bivariate( ... ). Puoi scorrere l'elenco. È possibile interrogare le caselle di struttura per determinare il livello della variabile Per oppure utilizzare la funzione Riepiloga() per ottenere un elenco dei gruppi. Sarà nello stesso ordine.
Sto valutando l'utilizzo di un array associativo per assegnare un oggetto rect a ciascuna possibile chiave nella colonna Checker Name. Puoi fornire un esempio di iterazione su un elenco di caselle di contorno e di aggiunta di un oggetto rect() a ciascuna di esse? Inoltre non ho familiarità con la funzione Riepiloga.
Presumo che tu stia utilizzando JMP18. Quando usi By ottieni un elenco di piattaforme e puoi quindi ripeterlo. Quindi si tratta solo di capire come ottenere il titolo e così via (oppure puoi usare Riepiloga e in quel caso costruirei l'elenco di riferimenti in un modo leggermente diverso). Se è difficile capire il loop, puoi prima creare semplicemente una singola piattaforma bivariata e farla funzionare, quindi espanderla in loop
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
aa_rect = Associative Array();
aa_rect["M"] = Expr(Rect(80, 60, 120, 55));
aa_rect["F"] = Expr(Rect(90, 65, 140, 55));
bivs = dt << Bivariate(Y(:height), X(:weight), By(:sex));
For Each({cur_biv}, bivs,
ob = Report(cur_biv)[OutlineBox(1)];
obtitle = ob << get title;
show(obtitle);
category = Word(-1, obtitle, "=");
fb = ob[FrameBox(1)];
Eval(EvalExpr(
fb << Add Graphics Script(
Pen Color("Blue");
Pen Size(2);
Expr(aa_rect[category]);
)
));
);
