Comment détecter les changements dans l'ordre de l'axe des X ?Comment puis-je détecter les changements dans l'ordre de l'axe des X ? J'utilise le JSL suivant pour marquer la couleur d'arrière-plan, mais les utilisateurs peuvent modifier l'ordre de l'axe des X comme illustré ci-dessous. Si je ne détecte pas que l'utilisateur a apporté cette modification au graphique, la zone de couleur d'arrière-plan précédemment marquée ne suivra pas le nouvel ordre et ne sera pas mise à jour.
Par exemple, si j'ai initialement marqué l'âge de 13 ans et que l'utilisateur modifie l'ordre en « Croissant, Poids », je dois savoir que l'utilisateur a déclenché le changement d'ordre afin que le marquage rouge puisse être correctement mis à jour à la position de 13 ans, au lieu de rester fixe.
Quelles méthodes puis-je utiliser pour détecter quand l'utilisateur modifie l'ordre de l'axe X, ou comment puis-je faire en sorte que le marquage de couleur d'arrière-plan change automatiquement avec l'ordre ?
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
GraphX =dt<< Graph Builder(
Size( 534, 450 ),
Show Control Panel( 0 ),
Variables( X( :age ), Y( :weight ), Overlay( :sex ) ),
Elements( Box Plot( X, Y, Legend( 4 ) ) )
);
rep1 = GraphX << report;
frameboxDCRFH = rep1 << XPath( "//FrameBox" );
frameboxDCRFH << Add Graphics Script(
Transparency( 0.1 );
Fill Color( "Red" );
Rect( 0.5, Y Origin() + Y Range(), 1.5, Y Origin(), 1 )
;
);

Automatisation et scriptsRe : Comment détecter les changements dans l'ordre de l'axe des X ?Je ne pense pas que nous ayons accès à de tels gestionnaires ; il faudrait donc soit en tenir compte dans votre script graphique, soit créer la coloration à l'aide d'un tracé séparé. Une façon de le prendre en compte avec un script graphique
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(534, 492),
Show Control Panel(0),
Variables(X(:age), Y(:weight), Y(:Column 6, Position(1)), Overlay(:sex)),
Elements(
Box Plot(X, Y(1), Legend(4)),
Points(X, Y(2), Overlay(0), Legend(6), Summary Statistic("Median"))
)
);
fb = Report(gb)[FrameBox(1)];
fb << Add Graphics Script(
fb = Report(gb)[FrameBox(1)];
barseg = fb << Find Seg(MarkerSeg(1));
xval = (barseg << Get X Values)[1];
Transparency(0.1);
Fill Color("Red");
Rect(xval - 0.5, Y Origin() + Y Range(), xval + 0.5, Y Origin(), 1)
);
Formule pour la colonne 6
If(:age == 13,
Col Median(:weight, :age),
.
)
Ajout d'un graphique à barres pour la couleur


Re : Comment détecter les changements dans l'ordre de l'axe des X ?Et vous pouvez améliorer l'intrigue en déplaçant la colonne « extra » vers la droite

Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Column 6", Numeric, "Continuous",
Set Property(
"Axis",
{Show Major Ticks(0), Show Minor Ticks(0), Show Labels(0), Min(0.49),
Max(0.5), Inc(0.2), Minor Ticks(0), Label Row(
{Show Major Labels(0), Show Major Ticks(0), Show Minor Ticks(0)}
)}
),
Formula(
If(:age == 13,
1
,
.
)
);
);
gb = dt << Graph Builder(
Size(712, 621),
Show Control Panel(0),
Variables(X(:age), Y(:weight), Y(:Column 6, Position(1), Side("Right")), Overlay(:sex)),
Elements(Bar(X, Y(2), Overlay(0), Legend(9), Summary Statistic("Median")), Box Plot(X, Y(1), Legend(4))),
SendToReport(
Dispatch({}, "400", ScaleBox, {Legend Model(9, Properties(0, {Fill Color(67), Transparency(0.2)}, Item ID("Median(Column 6)", 1)))}),
Dispatch({}, "Y r title", TextEditBox, {Set Text("")}),
Dispatch({}, "400", LegendBox, {Legend Position({9, [2], 4, [0, 1, -3, -3]})})
)
);
Re : Comment détecter les changements dans l'ordre de l'axe des X ?J'espère supprimer l'axe de droite. Cependant, je ne sais comment modifier manuellement que les propriétés d'affichage, comme illustré ci-dessous, et définir la visibilité sur Masqué. Comment puis-je réaliser ce réglage avec JSL ?

Re : Comment détecter les changements dans l'ordre de l'axe des X ?Je souhaite également supprimer automatiquement le marqueur médian dans les paramètres de légende avec JSL. L'image ci-dessous montre comment le supprimer manuellement. Comment puis-je le masquer avec JSL ?

Re : Comment détecter les changements dans l'ordre de l'axe des X ?Quels sont vos paramètres d'axe ? Vous pouvez masquer/supprimer la plupart des axes grâce à ces paramètres. La médiane ne devrait pas ajouter de marqueur, sauf si vous utilisez des points avec le graphique à barres. Si vous faites référence à l'élément de légende et non au marqueur, le plus simple est de le masquer manuellement et de copier le script.
Re : Comment détecter les changements dans l'ordre de l'axe des X ?
J'ai une question dérivée.
Si le graphique d'origine comporte déjà une variable intitulée « Couleur » et que la couleur du graphique à barres ne peut pas être contrôlée pour être rouge, que dois-je faire pour résoudre ce problème afin de conserver la couleur rouge ?
Le JSL suivant devrait aborder ces deux points :
1. Ajoutez color() aux variables:
Variables(X(:âge), Y(:poids), Y(:colonne 6, position(1), côté("droite")), superposition(:sexe),
Couleur (« sexe »)
),
2. Changez Fill color() en rouge : Dispatch({}, "400", ScaleBox, {Legend Model(9, Properties(0, { Couleur de remplissage (« rouge ») , Transparency(0.2)}, Item ID("Median(Column 6)", 1)))}),
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Column 6", Numeric, "Continuous",
Set Property(
"Axis",
{Show Major Ticks(0), Show Minor Ticks(0), Show Labels(0), Min(0.49),
Max(0.5), Inc(0.2), Minor Ticks(0), Label Row(
{Show Major Labels(0), Show Major Ticks(0), Show Minor Ticks(0)}
)}
),
Formula(
If(:age == 13,
1
,
.
)
);
);
gb = dt << Graph Builder(
Size(712, 621),
Show Control Panel(0),
Variables(X(:age), Y(:weight), Y(:Column 6, Position(1), Side("Right")), Overlay(:sex),Color("sex")),
Elements(Bar(X, Y(2), Overlay(0), Legend(9), Summary Statistic("Median")), Box Plot(X, Y(1), Legend(4))),
SendToReport(
Dispatch({}, "400", ScaleBox, {Legend Model(9, Properties(0, {Fill Color("Red"), Transparency(0.2)}, Item ID("Median(Column 6)", 1)))}),
Dispatch({}, "Y r title", TextEditBox, {Set Text("")}),
Dispatch({}, "400", LegendBox, {Legend Position({9, [2], 4, [0, 1, -3, -3]})})
)
);
Re : Comment détecter les changements dans l'ordre de l'axe des X ?Désactiver la couleur des variables des graphiques à barres et modifier la couleur ?
Re : Comment détecter les changements dans l'ordre de l'axe des X ?J'ai défini la couleur de la barre dans Personnaliser le graphique, mais aucun changement n'a eu lieu.
Ou dois-je définir la couleur de la barre dans un autre panneau ? Je n'ai trouvé aucun autre endroit pour définir la couleur de la barre.

Re : Comment détecter les changements dans l'ordre de l'axe des X ?Après avoir exécuté votre script, je désactive la couleur pour la barre (à droite)

Ensuite, je peux modifier la médiane (colonne 6)
