☐ nouvelle fonctionnalité intéressante - non, mais :
☑ pourrait aider de nombreux utilisateurs !!!!
☑ supprime quelque chose qui ressemble à un « bug »
☐ agréable à avoir
☐ personne n'en a besoin
Qu'est-ce qui a inspiré cette demande de liste de souhaits ?
Lorsque l'utilisateur modifie l'ordre du sous-tracé dans le générateur de graphiques en faisant glisser l'étiquette sur l'axe X ou Y vers une autre position, des choses étranges se produisent :
https://community.jmp.com/t5/Discussions/Graph-Builder-settings-for-new-FrameBoxes/mp/561610/highlight/true#M77469
Dans cet exemple,
- faire glisser "hauteur" sur l'axe Y vers le haut réinitialise les couleurs (!!)
- glisser "hauteur" sur l'axe X vers la droite ne réinitialise PAS les couleurs (?
)
- il suffit de saisir et de relâcher la "hauteur" sur l'axe X pour réinitialiser les couleurs (!!!)
De plus, lors de l'ajout de nouvelles sous-intrigues, c'est presque un pari à quoi ressemblera l'intrigue :
Les paramètres de couleur/marqueur sont clonés dans de nouvelles sous-parcelles,si des variables sont ajoutées par glisser-déposer
- à droite d'une variable X existante
- en bas d'une variable Y existante
et les paramètres ne sont pas clonés si les nouvelles variables sont ajoutées
- à gauche d'une variable X existante
- au dessus d'une variable Y existante (99% des cas d'usage !!!)
Quelle est l’amélioration que vous souhaiteriez voir ?
veuillez résoudre le problème !
Lorsqu'un utilisateur modifie l'ordre des sous-traces ou ajoute de nouvelles variables, certaines actions doivent avoir lieu sur une couche de plomberie de telle sorte que sur la couche de porcelaine, tout se comporte comme prévu.
Pourquoi cette idée est-elle importante ?
1) Lors de la modification de l'ordre des sous-tracés, chaque utilisateur s'attend à ce que seules les sous-tracés changent de position - personne ne s'attendrait à ce que les paramètres de couleur changent.
2) Lorsqu'un utilisateur ajoute des variables à l'axe x ou y, le résultat doit être prévisible. Le résultat devrait être le même, que vous ajoutiez la nouvelle variable à gauche, à droite, en haut ou en bas des variables existantes.
d'autres souhaits de 
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>
En jouant avec ce problème, je comprends maintenant mieux pourquoi Jmp se comporte ainsi.
Après avoir exécuté le script dans le premier message, le code source du rapport Graph Builder ressemble à ceci :
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 )
)
)}
)
)
);On peut voir que la première sous-intrigue avec la légende n°9 a des paramètres de ligne et de marqueur spéciaux, les autres sous-intrigues (légende n°10-12) n'en ont pas. Ainsi, les paramètres #9 sont automatiquement "diffusés" vers les autres sous-parcelles car elles partagent la même colonne Couleur -- et donc les mêmes entrées de légende.
En effet, le paramètre a été appliqué en premier, puis les nouveaux sous-tracés ont été générés. La même chose se produit si l'utilisateur modifie le paramètre avec un seul ensemble d'éléments dans la légende :

Ensuite, le nouveau paramètre est appliqué à tous les tracés en même temps - et dans le script, les modifications apparaissent uniquement pour le premier numéro de légende.
Si l'utilisateur active les entrées de légende pour chaque sous-parcelle, il peut modifier les sous-parcelles séparément.

Passons maintenant à un autre tracé (le code ci-dessous) et découvrons ce qui se passe. Ici, chaque sous-intrigue a son propre formatage (pas de colonne de couleur commune) et lorsque je prends l'un des groupes de sous-intrigues (une colonne sur l'axe Y) et que je le fais glisser vers un autre emplacement, les autres sous-intrigues conservent leurs paramètres et seules les sous-intrigues déplacées oublient leurs paramètres.
C'est un comportement acceptable (**) - car la colonne pourrait également être déplacée vers un emplacement complètement différent (plus tard dans la vidéo : vers l'axe des x). Personne ne s’attendrait alors à ce que le formatage puisse être copié.
À la fin de la vidéo, la colonne est replacée à sa position d'origine - et l'intrigue est différente de ce qu'elle était auparavant. C'est en quelque sorte OK - cela devrait l'être, car nous avons déjà accepté un tel comportement (**):)
C'est juste un peu surprenant.
NB : Pour récupérer l'ancien tracé, on pourrait appuyer sur CTRL + Z, ou tout en faisant glisser la colonne, appuyer sur 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" )} )
)
)