☐ nuova fantastica funzionalità - no, ma:
☑ potrebbe aiutare molti utenti!!!!
☑ rimuove qualcosa che sembra un "bug"
☐ bello averlo
☐ nessuno ne ha bisogno
Cosa ha ispirato questa richiesta di lista dei desideri?
Quando l'utente modifica l'ordine della sottotrama nel generatore di grafici trascinando l'etichetta sull'asse X o Y in un'altra posizione, accadono cose strane:
https://community.jmp.com/t5/Discussions/Graph-Builder-settings-for-new-FrameBoxes/mp/561610/highlight/true#M77469
In questo esempio,
- trascinando "altezza" sull'asse Y verso l'alto si ripristinano i colori (!!)
- trascinando"altezza" sull'asse X verso destra NON si ripristinano i colori (?
)
- semplicemente afferrando e rilasciando "altezza" sull'asse X si ripristinano i colori (!!!)
Inoltre, quando si aggiungono nuove sottotrame è quasi una scommessa come apparirà la trama:
Le impostazioni di colore/marcatore vengono clonate in nuove sottotrame,se le variabili vengono aggiunte tramite drag & drop
- a destra di una variabile X esistente
- sul fondo di una variabile Y esistente
e le impostazioni non vengono clonate se vengono aggiunte le nuove variabili
- a sinistra di una variabile X esistente
- in cima a una variabile Y esistente (99% dei casi d'uso !!!)
Qual è il miglioramento che vorresti vedere?
per favore risolvi il problema!
Quando un utente cambia l'ordine delle sottotrame o aggiunge nuove variabili, alcune azioni dovrebbero avvenire sullo strato idraulico in modo tale che sullo strato porcellana tutto si comporti come previsto.
Perché questa idea è importante?
1) Quando si cambia l'ordine delle sottotrame, ogni utente si aspetta che solo le sottotrame cambino la loro posizione: nessuno si aspetterebbe che le impostazioni del colore cambino.
2) Quando un utente aggiunge variabili all'asse xo y, il risultato dovrebbe essere prevedibile. Il risultato dovrebbe essere lo stesso, indipendentemente dal fatto che tu aggiunga la nuova variabile a sinistra, a destra, sopra o sotto le variabili esistenti.
altri desideri da 
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Size( 534, 496 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 9 ) ) )
);
// change color/marker settings
scalebox = gb << get legend server();
scalebox << Legend Model(
9,
Properties( 0, {Line Color( 43 ), Marker( "Down Triangle" )}, Item ID( "F", 1 ) ),
Properties( 1, {Line Color( 0 ), Marker Size( 10 )}, Item ID( "M", 1 ) )
);
// add second Y variable
gb << add variable( {:height, Role( "Y" )} );
gb << add variable( {:sex, Role( "X" )} );
Wait( 0 );
New Window( "Modal Dialog example",
<<TYPE></TYPE>
Mentre giocavo con questo problema, ora capisco meglio perché Jmp si comporta in questo modo.
Dopo aver eseguito lo script nel primo post, il codice sorgente del report del generatore di grafici si presenta così:
Graph Builder(
Variables( X( :height ), X( :sex ), Y( :weight ), Y( :height ), Color( :sex ) ),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 9 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 10 ) ) ),
Elements( Position( 2, 1 ), Points( X, Y, Legend( 11 ) ) ),
Elements( Position( 2, 2 ), Points( X, Y, Legend( 12 ) ) ),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model(
9,
Properties(
0,
{Line Color( 43 ), Marker( "Down Triangle" )},
Item ID( "F", 1 )
),
Properties(
1,
{Line Color( 0 ), Marker Size( 10 )},
Item ID( "M", 1 )
)
)}
)
)
);Si può vedere che la prima sottotrama con la Leggenda n. 9 ha alcune impostazioni speciali di linea e contrassegno, le altre sottotrame (Legenda n. 10-12) no. Pertanto, le impostazioni n. 9 vengono automaticamente "trasmesse" alle altre sottotrame perché condividono la stessa colonna Colore e quindi le stesse voci della legenda.
Questo perché prima è stata applicata l'impostazione e poi sono state generate le nuove sottotrame. Lo stesso accade se l'utente modifica l'impostazione con un solo insieme di elementi nella legenda:

Quindi la nuova impostazione viene applicata a tutti i grafici contemporaneamente e nello script le modifiche appaiono solo per la prima legenda #.
Se l'utente attiva le voci della legenda per ciascuna sottotrama, può modificare le sottotrame separatamente.

Passiamo ora a un'altra trama (il codice seguente) e scopriamo cosa succede. Qui, ogni sottotrama ha la propria formattazione (nessuna colonna di colore comune) e quando prendo uno dei gruppi di sottotrame (una colonna sull'asse Y) e lo trascino in un'altra posizione, le altre sottotrame mantengono le loro impostazioni e solo le sottotrame spostate dimenticano le loro impostazioni.
Questo è un comportamento accettabile (**) - perché la colonna potrebbe anche essere trascinata in una posizione completamente diversa (più avanti nel video: sull'asse x). Allora nessuno si aspetterebbe che la formattazione possa essere copiata.
Alla fine del video, la colonna viene ricollocata nella posizione originale e la trama appare diversa da come appariva prima. In qualche modo va bene, dovrebbe esserlo, perché abbiamo già accettato un comportamento del genere (**):)
È solo un po' sorprendente.
NB: Per ripristinare il vecchio grafico è possibile premere CTRL + Z oppure mentre si trascina la colonna premere ESC.
dt = new table();
dt << add rows(1);
c1= dt << new column ("col1",Nominal,set each value (1));
c2= dt << new column ("col2",Nominal,set each value (2));
c3= dt << new column ("col3",Nominal,set each value (3));
c4= dt << new column ("col4",Nominal,set each value (4));
c5= dt << new column ("col5",Nominal,set each value (5));
c6= dt << new column ("col6",Nominal,set each value (6));
Graph Builder(
Size( 330, 347 ),
Show Control Panel( 0 ),
Graph Spacing( 10 ),
Variables(
X( :col1 ),
X( :col2 ),
X( :col3 ),
Y( :col6 ),
Y( :col5 ),
Y( :col4 )
),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 7 ) ) ),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 1 ) ) ),
Elements( Position( 1, 3 ), Points( X, Y, Legend( 2 ) ) ),
Elements( Position( 2, 1 ), Points( X, Y, Legend( 8 ) ) ),
Elements( Position( 2, 2 ), Points( X, Y, Legend( 3 ) ) ),
Elements( Position( 2, 3 ), Points( X, Y, Legend( 4 ) ) ),
Elements( Position( 3, 1 ), Points( X, Y, Legend( 9 ) ) ),
Elements( Position( 3, 2 ), Points( X, Y, Legend( 5 ) ) ),
Elements( Position( 3, 3 ), Points( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch( {}, "400", ScaleBox,
{Legend Model(
7,
Properties(
0,
{Line Color( 3 ), Marker( "Backslash" ),
Marker Size( 30 )},
Item ID( "col6", 1 )
)
), Legend Model(
1,
Properties(
0,
{Line Color( 38 ), Marker( "Filled Left Triangle" ),
Marker Size( 30 )},
Item ID( "col5", 1 )
)
), Legend Model(
2,
Properties(
0,
{Line Color( 36 ), Marker( "Slash" ), Marker Size( 30 )},
Item ID( "col4", 1 )
)
), Legend Model(
8,
Properties(
0,
{Line Color( 3 ), Marker( "Filled Up Triangle" ),
Marker Size( 30 )},
Item ID( "col6", 1 )
)
), Legend Model(
3,
Properties(
0,
{Line Color( 38 ), Marker( "FilledCircle" ),
Marker Size( 30 )},
Item ID( "col5", 1 )
)
), Legend Model(
4,
Properties(
0,
{Line Color( 36 ), Marker( "Filled Down Triangle" ),
Marker Size( 30 )},
Item ID( "col4", 1 )
)
), Legend Model(
9,
Properties(
0,
{Line Color( 3 ), Marker( "Slash" ), Marker Size( 30 )},
Item ID( "col6", 1 )
)
), Legend Model(
5,
Properties(
0,
{Line Color( 38 ), Marker( "Filled Right Triangle" ),
Marker Size( 30 )},
Item ID( "col5", 1 )
)
), Legend Model(
6,
Properties(
0,
{Line Color( 36 ), Marker( "Backslash" ),
Marker Size( 30 )},
Item ID( "col4", 1 )
)
)}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "1" )} ),
Dispatch( {}, "Y title", TextEditBox,
{Set Text( "6" ), Rotate Text( "Horizontal" )}
),
Dispatch( {}, "Y 1 title", TextEditBox,
{Set Text( "5" ), Rotate Text( "Horizontal" )}
),
Dispatch( {}, "Y 2 title", TextEditBox,
{Set Text( "4" ), Rotate Text( "Horizontal" )}
),
Dispatch( {}, "X 1 title", TextEditBox, {Set Text( "2" )} ),
Dispatch( {}, "X 2 title", TextEditBox, {Set Text( "3" )} )
)
)