Modifier l'ordre de dessin des éléments graphiques à l'aide de JSL<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut tout le monde,
Je sais que vous pouvez modifier l'ordre de dessin des éléments graphiques en cliquant avec le bouton droit sur un graphique, puis en cliquant sur personnaliser, puis en déplaçant l'ordre des scripts graphiques à l'aide des flèches haut/bas. Existe-t-il un moyen de le faire en utilisant JSL? Il y a des messages que vous pouvez envoyer à la Framebox pour changer l'ordre des lignes de grille et des lignes de référence, j'espérais qu'il y aurait quelque chose de similaire pour les marqueurs. Vous pouvez également modifier la transparence de choses comme les lignes ajustées, etc. Merci !
Re : Modifier l'ordre de dessin des éléments graphiques à l'aide de JSLAvec JMP 14.2, les options de personnalisation du graphique fonctionnent avec des commandes jsl comme celle-ci, avec les valeurs des variables "Window" et "Frame Box", et donc arbitraires pour cet exemple :
Window(6)[Frame Box( 1 )] << Dispatch( {}, "Oneway Plot", FrameBox, {Grid Line Order( 3 )})
Je suis capable de faire cette astuce pour que les lignes de grille apparaissent au-dessus des marqueurs pour les plates-formes bivariées, de tracé de variabilité et de tracé de contour, mais je ne peux pas le faire fonctionner pour la plate-forme Oneway au-delà d'une valeur de 3. Le marqueur est en 5ème position par défaut, j'ai donc besoin que l'ordre des lignes de la grille soit après cela. Bien que la commande ci-dessus avec Grid Line Order ( 2 ) ou Grid Line Order ( 3 ) fonctionne correctement, rien ne se passe lorsque j'utilise Grid Line Order ( 4 ) ou Grid Line Order ( 5 ). Je crois que c'est un bug.
Si je fais le pointer et cliquer et forcer l'ordre des lignes de grille à 5, puis enregistrer le script dans la fenêtre de script, j'obtiens "Grid Line Order( 5 ), Reference Line Order( 1 )", mais en exécutant le script tel quel à partir du la fenêtre de script ne place même pas les lignes de la grille en 5ème position.
Je reprends le commentaire de @nkelleh : " Son regrettable message 'commande de marqueur' n'a pas été inclus avec les messages 'Commande de ligne de référence' et 'Commande de ligne de grille' pour la boîte de cadre." JMP permettant des options telles que "Après/Avant" ou "Dernier/Premier", comme il le fait avec l'organisation des colonnes ou des lignes dans une table de données, serait également utile ici.
Re : Modifier l'ordre de dessin des éléments graphiques à l'aide de JSLEn fait, ça marche aussi. Je ne sais pas pourquoi je n'ai pas pensé à essayer ça. Acclamations.
Re : Modifier l'ordre de dessin des éléments graphiques à l'aide de JSLAvez-vous essayé de simplement ajouter le markerseg au cadre après l'avoir supprimé ?
- markerSeg1 = bivFrame << Find Seg( Marker Seg( 1 ) );
- marqueurSeg1 << Supprimer ;
- bivFrame << appendseg(markerSeg1);
Cela devrait le faire durer dans l'ordre du tirage.Le supprimer le supprime simplement de l'arborescence, il devrait donc être sûr de le rajouter.
Re : Modifier l'ordre de dessin des éléments graphiques à l'aide de JSLAh bon, fallait demander au cas où !
Merci pour la solution de contournement, j'ai pu obtenir la sortie que je cherchais en supprimant les marqueurs existants et en les redessinant comme suggéré par le fil que vous avez lié. Vous perdez l'interactivité de la plate-forme en termes de sélection de points de données, mais comme c'était à des fins purement de visualisation de données, cela me convenait.
Merci encore.
Ci-dessous le segment de code que j'ai réutilisé pour supprimer les marqueurs et les redessiner
//Delete Markers if requiredmarkerSeg1 = bivFrame << Find Seg( Marker Seg(1) );markerSeg1 << Delete;//Script to redraw markers on topbivFrame << Add Graphics Script( For(r=1, r <= NRows(dtMain), r++, y = Column( dtMain, "Voltage" ); x = Column( dtMain, "Temp" ); ms = Combine States( Marker State( Marker Of( Row State( r ) ) ), Color State( Color Of( Row State( r ) ) ) ); Marker(ms, {x, y}); ); );Re : Modifier l'ordre de dessin des éléments graphiques à l'aide de JSLDésolé - Maintenant je comprends.
Dans l'espoir que quelqu'un prouvera que j'ai tort, je dirai que vous n'avez malheureusement pas de chance. À la fois en termes de rotation des flèches haut / bas par programmation et de transparence des lignes ajustées.
Pas nécessairement recommandé, mais si vous souhaitez amener les marqueurs au premier plan, vous pouvez envisager de les redessiner avec un script graphique utilisant une variante de : https://community.jmp.com/thread/65641
Re : Modifier l'ordre de dessin des éléments graphiques à l'aide de JSLSalut Ian,
Merci encore, conseils utiles. Ici, je souhaite conserver les autres éléments graphiques, dans ce cas les splines ajustées, mais amener les marqueurs devant le tracé (les lignes de l'ajustement de la spline masquent les marqueurs dans les zones où de nombreuses lignes/marqueurs sont rapprochés. Je peux le faire manuellement en utilisant la méthode décrite dans le message d'origine, en me demandant simplement s'il existe un moyen de le faire par programmation. Son regrettable message "Ordre de marqueur" n'a pas été inclus avec les messages "Ordre de ligne de référence" et "Ordre de ligne de grille" pour la boîte de cadre.
Il est facile de modifier la transparence des objets dessinés à l'aide d'un script graphique. Sur une autre note, je me demandais s'il y avait un moyen de changer la transparence des lignes ajustées dans, disons, la plate-forme bivariée.
Merci encore pour votre aide.
Re : Modifier l'ordre de dessin des éléments graphiques à l'aide de JSLPour votre information, vous pouvez faire ce genre de choses (donc avec la possibilité de changer l'ordre de la grille et des lignes de référence, vous pourrez peut-être obtenir ce que vous voulez):
Noms par défaut ici ( 1 ) ;
Ouvrir ( "$SAMPLE_DATA/Grande classe.jmp" ) ;
bivouac = Bivarié ( Oui ( : lester ) , X ( : hauteur ) , FitLine ) ;
biv = bivouac << rapport ;
framebox = biv [ boîte de cadre ( 1 )] ;
Attendez ( 1 ) ;
framebox <<
Ajouter un script graphique (
1 ,
Description ( "Polygone Orange" ) ,
Transparence ( 0,5 ) ;
La couleur de remplissage ( { 1.0 , 0,5 , 0.0 } ) ;
Polygone ( [ 60 , 72 , 57 ] , [ 75 , 120 , 120 ] ) ;
) ;
Attendez ( 1 ) ;
framebox <<
Ajouter un script graphique (
2 ,
Description ( "Polygone bleu" ) ,
Transparence ( 0,5 ) ;
La couleur de remplissage ( { 0.0 , 0,5 , 1.0 } ) ;
Polygone ( [ 60 , 72 , 57 ] , [ 150 , 120 , 120 ] ) ;
) ;
Attendez ( 1 ) ;
framebox << Supprimer le script graphique ( 1 ) ;
// Après avoir supprimé le premier script graphique, le second est maintenant en position 1 (même s'il était assigné à l'origine en position 2) . . .
Attendez ( 1 ) ;
framebox << Supprimer le script graphique ( 1 ) ;
Veuillez également consulter : https://www.jmp.com/support/help/Adding_Scripts_to_Graphs.shtml