Nascondere gli elementi della legenda nel Costruttore di grafici utilizzando JSLSto riscontrando un fastidioso problema con il Graph Builder in JSL.Per mostrare sia i punti che una visualizzazione più fluida su un grafico a dispersione, sto modificando la trasparenza dei punti.Posso farlo funzionare abbastanza bene, ma quando manipolo la trama più avanti in JSL i punti vengono aggiunti nuovamente alla legenda per impostazione predefinita invece di rimanere nascosti, presumo perché JMP pensa che non siano più ridondanti.So che manualmente nel generatore di grafici puoi deselezionare gli elementi che non desideri visualizzare, ma c'è un modo per farlo in JSL?


Ri: Nascondere gli elementi della legenda nel Generatore di grafici utilizzando JSLE grazie @anne_sa .Le tue informazioni mi hanno indirizzato nella giusta direzione.
Ri: Nascondere gli elementi della legenda nel Generatore di grafici utilizzando JSLGrazie @txnelson E @jjswan33 per le tue risposte!
Devo adattarlo leggermente per farlo corrispondere alla mia sceneggiatura, ma penso che funzionerà.
Grazie ancora 
Ri: Nascondere gli elementi della legenda nel Generatore di grafici utilizzando JSLHo trovato una soluzione alternativa che, a mio avviso, è più pulita del metodo della forza bruta di Jim.
Invece sto definendo due elenchi all'inizio della mia funzione:
p = {};
l = {};
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
For(i=0, i < NSplits, i+=1,
p = Insert(p, -1);
l = Insert(l, i);
);
pl = Insert(p, l);per creare i due elenchi necessari per gli elementi della legenda punti e linee (nel mio caso), quindi passare tali elenchi come matrici che vengono inviate al generatore di grafici come segue:
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, Matrix(p), 9, Matrix(l)} ),
Position( Matrix(pl))}
)Versione completa della funzione aggiornata:
RadPlotCreator1XGroupTest = Function({dt, XCol, YCol, OverlayCol, GroupXCol}, {Default Local},
p = {};
l = {};
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
For(i=0, i < NSplits, i+=1,
p = Insert(p, -1);
l = Insert(l, i);
);
pl = Insert(p, l);
gb = dt << Graph Builder(
Size( 849, 622 ),
Fit to Window( "Off" ),
Show Control Panel(0),
Grid Color( "Black" ),
Variables(
X( XCol ),
Y( YCol ),
Group X( GroupXCol ),
Overlay( OverlayCol )
),
Elements(Points(X, Y, Legend(3)), Smoother( X, Y, Legend( 9 ) )),
SendToReport(
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {3, Matrix(p), 9, Matrix(l)} ),
Position( Matrix(pl))}
)
)
);
sb = report(gb)[ScaleBox(5)];
For(i=0, i < NSplits, i+=1,
sb << Legend Model(3, Properties(i, {Transparency(0.2)}));
);
frame_list = gb << xpath("//FrameBox");
num_frames = N Items (frame_list);
For(i=1, i <= num_frames, i+=1,
Report(gb)[Framebox(i)] << Background Color(White);
Report(gb)[Framebox(i)] << Grid Line Order( Back );
Report(gb)[Framebox(i)] << Reference Line Order( Back );
Report(gb)[Framebox(i)] << Frame Size(250, 250);
Report(gb)[Framebox(i)] << X Axis(0, 150, Inc(20), Minor Ticks(1),
Add Ref Line( 70, Solid, "Black", "", 2 ),
Add Ref Line( 120, Solid, "Black", "", 2 ),
Add Ref Line( 135, Solid, "Black", "", 2 ), Show Major Grid( 1 ));
Report(gb)[Framebox(i)] << Y Axis(Minor Ticks(1));
);
gbp = Report( gb );
img = gbp << getpicture();
return(img);
);
Ri: Nascondere gli elementi della legenda nel Generatore di grafici utilizzando JSLEcco il metodo della forza bruta che utilizzo per risolvere questo tipo di problemi.Creo semplicemente il codice JSL richiesto e quindi eseguo il JSL che ho creato. Tieni presente che nella tabella dati Big Class che ho utilizzato, ho aggiunto un ulteriore gruppo di età, di 18 anni.
Names Default To Here( 1 );
dt = Current Data Table();
// Find the number of Age groups
Summarize( dt, ageGroups = by( :age ) );
// Build the JSL
theExpr =
"Graph Builder(
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
\!"400\!",
LegendBox,
{Legend Position(
{6, [ -1";
For( i = 2, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", -1"
);
theExpr = theExpr || "], 7, [0";
For( i = 1, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", " || Char( i )
);
theExpr = theExpr || ", -3]}
), Position( {-1";
For( i = 2, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", -1"
);
For( i = 0, i <= N Items( ageGroups ), i++,
theExpr = theExpr || ", " || Char( i )
);
theExpr = theExpr || ", -3]} ) } )));";
// Execute the JSL string
eval(parse(theExpr));

Ri: Nascondere gli elementi della legenda nel Generatore di grafici utilizzando JSLOoops, copia/incolla sbagliato, scusate la confusione!
Rifacciamolo (usando JMP15)!
Per prima cosa ho il seguente grafico:

E lo script corrispondente è:
Graph Builder(
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) )
)
Manualmente modifico la legenda e deseleziono le voci associate ai punti:

ottengo questo grafico:

E lo script aggiornato è:
Graph Builder(
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Points( X, Y, Legend( 6 ) ), Box Plot( X, Y, Legend( 7 ) ) ),
SendToReport(
Dispatch(
{},
"400",
LegendBox,
{Legend Position(
{6, [-1, -1, -1, -1, -1, -1], 7, [0, 1, 2, 3, 4, 5, 6, -3]}
), Position( {-1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, -3} )}
)
)
)Esiste un modo semplice per gestire questo secondo passaggio con JSL?
Ri: Nascondere gli elementi della legenda nel Generatore di grafici utilizzando JSLPersonalmente ottengo le doppie leggende sia in JMP 12 che in JMP 14.Non ho pubblicato il mio codice prima, ma di seguito è riportata la funzione che utilizzo per creare i grafici in cui ho il problema.Nel mio caso credo che ciò che sta accadendo è che non appena utilizzo il bit di codice per impostare la trasparenza dei punti, JMP non pensa più che l'elemento della legenda dei punti sia ridondante e visualizza il risultato.
RadPlotCreator1X1YGroup = Function({dt, XCol, YCol, OverlayCol, GroupXCol, GroupYCol}, {Default Local},
gb = dt << Graph Builder(
Size( 849, 622 ),
Fit to Window( "Off" ),
Show Control Panel(0),
Grid Color( "Black" ),
Variables(
X( XCol ),
Y( YCol ),
Group X( GroupXCol ),
Group Y( GroupYCol ),
Overlay( OverlayCol )
),
Elements(Points(X, Y, Legend(3)), Smoother( X, Y, Legend( 9 ) )),
SendToReport(
Dispatch(
{},
"",
ScaleBox,
{}
),
Dispatch(
{},
"",
ScaleBox,
{}
)
)
);
summarize(unique_values=by(OverlayCol));
NSplits = N Items (unique_values);
sb = report(gb)[ScaleBox(5)];
For(i=0, i < NSplits, i+=1,
sb << Legend Model(3, Properties(i, {Transparency(0.2)}));
);
frame_list = gb << xpath("//FrameBox");
num_frames = N Items (frame_list);
For(i=1, i <= num_frames, i+=1,
Report(gb)[Framebox(i)] << Background Color(White);
Report(gb)[Framebox(i)] << Grid Line Order( Back );
Report(gb)[Framebox(i)] << Reference Line Order( Back );
Report(gb)[Framebox(i)] << Frame Size(250, 250);
Report(gb)[Framebox(i)] << X Axis(0, 150, Inc(20), Minor Ticks(1),
Add Ref Line( 70, Solid, "Black", "", 2 ),
Add Ref Line( 120, Solid, "Black", "", 2 ),
Add Ref Line( 135, Solid, "Black", "", 2 ), Show Major Grid( 1 ));
Report(gb)[Framebox(i)] << Y Axis(Minor Ticks(1));
);
gbp = Report( gb );
img = gbp << getpicture();
return(img);
);Ri: Nascondere gli elementi della legenda nel Generatore di grafici utilizzando JSLQuale versione di JMP stai utilizzando e su quale sistema operativo.Utilizzando il JSL che hai fornito, non riesco a ottenere risultati come stai specificando.Per JMP 15 ottengo

In JMP 13 e JMP 14 ottengo:

In JMP 11 e JMP 12, ottengo:

Ma non riesco a ottenere il grafico che presenti con i diversi indicatori, e sia i punti che il contrassegno rettangolare nella legenda.
Ri: Nascondere gli elementi della legenda nel Generatore di grafici utilizzando JSLCIAO @txnelson ,
Grazie per la tua risposta.
Tuttavia non voglio nascondere o cancellare completamente la leggenda ma solo una parte di essa.
Di default ho il seguente grafico:

E vorrei nascondere solo gli elementi punto nella legenda per ottenere quello:

Apparentemente "-1" nell'opzione di posizione della legenda significa "nascondi questo elemento" ma non vedo come utilizzare facilmente questa opzione senza informazioni preliminari sul grafico.
Spero che sia più chiaro.
Ri: Nascondere gli elementi della legenda nel Generatore di grafici utilizzando JSLÈ possibile utilizzare l'elemento Mostra legenda per controllare la visualizzazione o l'occultamento della legenda.Ecco la voce dello Scripting Index che lo mostra
Aiuto==>Indice degli script

È inoltre possibile eliminare l'intero componente Legenda eliminandolo utilizzando le funzionalità della struttura di visualizzazione in JMP
gb = Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Box Plot( X, Y))
);
report(gb)[LegendBox(1)]<<DELETE></DELETE>
Ri: Nascondere gli elementi della legenda nel Generatore di grafici utilizzando JSLCiao a tutti,
Attualmente sto affrontando lo stesso problema: nascondere una parte della legenda del Graph Builder utilizzando JSL.
Penso che le opzioni "Legenda" o "Posizione leggenda" potrebbero aiutare ma ho difficoltà a comprendere appieno come funziona, in particolare se non conosciamo il numero di gruppi.
Ad esempio, voglio creare questo tipo di grafico utilizzando la tabella Big Class e non voglio visualizzare gli elementi punto nella legenda:

Lo script corrispondente è:
Graph Builder(
Size( 528, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :height ), Color( :age ) ),
Elements( Box Plot( X, Y, Legend( 4 ) ), Points( X, Y, Legend( 5 ) ) ),
SendToReport(
Dispatch(
{},
"400",
LegendBox,
{Legend Position(
{4, [0, 1, 2, 3, 4, 5, 6, -3], 5, [-1, -1, -1, -1, -1, -1]}
), Position( {0, 1, 2, 3, 4, 5, 6, -3, -1, -1, -1, -1, -1, -1} )}
)
)
)Esiste un modo per generalizzare il processo senza conoscere il numero di livelli della variabile età?
Qualsiasi input sarebbe apprezzato
Grazie
Ri: Nascondere gli elementi della legenda nel Generatore di grafici utilizzando JSLImmagino che non esista una soluzione JSL per questo.Se così fosse, dovrebbe esserci molto.