Comment définir le style de ligne dans JSL ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Je voudrais définir le style de ligne pour un graphique linéaire basé sur une fonction de la colonne que j'utilise pour superposer. Par exemple, si j'ai des données où la colonne que j'utilise pour superposer a des valeurs "Revenue_Jan", "Profit_Jan", "Revenue_Feb", "Profit_Feb", je veux que tout graphique "Revenu" soit en pointillés et tout graphique "Profit" à être en pointillé.
Puis-je définir le style de ligne de cette manière en utilisant JSL ?
Re : Comment définir le style de ligne dans JSL ?J'ai également remarqué que le nombre n'a pas d'importance, du moins pas dans l'exemple actuel. Je ne sais pas à quoi le modèle de légende fait référence. Graph Builder est assez différent des autres plates-formes en matière de script.
Re : Comment définir le style de ligne dans JSL ?Fantastique, merci !
Une chose que je ne comprends toujours pas - pour moi, votre script ne fonctionne que lorsque je change "{Legend Model(4..." en "{Legend Model{1...". Savez-vous à quoi ce "modèle de légende" fait référence ? Je ne trouve nulle part la documentation dessus.
Re : Comment définir le style de ligne dans JSL ?Voici une extension de l'exemple de Jim qui applique conditionnellement le style de ligne aux niveaux de superposition en bouclant sur une liste de niveaux.
Dans Graph Builder, chaque niveau de superposition semble être adressé par un nombre commençant à 0. L'ordre diffère de la valeur par défaut si la colonne Overlay a une propriété Value Ordering. Ainsi, l'ordre des niveaux doit être pris en compte lors de la création de la liste.
Noms par défaut ici ( 1 ) ;
// Exemple de tableau de données
dt = Ouvrir ( "$SAMPLE_DATA/Grande classe.jmp" ) ;
dt << Nouvelle colonne ( "groupe" ,
Personnage ,
Formule (
Si (
: sexe == "F" & : hauteur < Col moyenne ( : hauteur , : sexe ) , "F court" ,
: sexe == "F" & : hauteur >= Col moyenne ( : hauteur , : sexe ) , "F grand" ,
: sexe == "M" & : hauteur < Col moyenne ( : hauteur , : sexe ) , "M court" ,
"M de haut"
)
)
) ;
// Générateur de graphes avec superposition
SuperpositionCol = Colonne ( dt , "groupe" ) ;
Go = Générateur de graphiques (
Taille ( 528 , 447 ) ,
Afficher le panneau de configuration ( 0 ) ,
variables ( X ( : âge ) , Oui ( Comme colonne ( ColY )) , recouvrir ( groupe )) ,
Éléments ( Doubler ( X , Oui )) ,
) ;
// Appliquer le style de ligne pour superposer les valeurs qui remplissent les critères
le style = "Pointé" ;
critère = "M" ;
Résumer ( g = par ( SuperpositionCol )) ; // Liste des niveaux de superposition (ordre alphabétique)
// Décommenter sous la ligne si la propriété Value Ordering est définie pour la colonne Overlay
// g=OverlayCol<
Pour ( je = 1 , je <= N articles ( g ) , je ++,
Si ( Contient ( g [ je ] , critère ) ,
Go << Envoyer vers le rapport (
Expédition ({} , "400" , ScaleBox ,
{ Modèle de légende ( 4 , Propriétés ( je - 1 , { Style de ligne ( le style )}))}
)
)
)
) ;
Re : Comment définir le style de ligne dans JSL ?
Salut Jim, merci pour la réponse. Mon problème est que, dans votre exemple, vous indiquez explicitement au script quel graphique modifier le style de ligne, dans le Propriétés ( 0 , { Style de ligne ( "Pointé" )} commande. Dans le cas qui m'intéresse, je ne saurai pas à l'avance combien de graphiques il y a - il pourrait y en avoir 3, il pourrait y en avoir 30, et je veux changer le style de ligne de chacun en fonction de la valeur de superposition.
Existe-t-il une manière plus générale de faire cette commande, qui sélectionne un groupe au lieu de choisir un graphique spécifique à modifier ? Ou, par exemple, pourrais-je d'une manière ou d'une autre trouver l'index des graphiques qui m'intéressent et exécuter une boucle qui modifie le style de ligne de chacun?
Par exemple, si j'ai trois graphiques, "Revenue_Jan", "Profit_Jan" et "Revenue_Feb" (et je ne sais pas à l'avance combien de graphiques "Revenus" il y aura), y a-t-il un bon moyen de savoir que le graphique 0 et le graphique 2 commencent tous les deux par "Revenu" et exécutent une boucle qui modifie le style des deux ? Ou existe-t-il un autre moyen de faire ce genre de fonction?
Re : Comment définir le style de ligne dans JSL ?Le style de ligne peut facilement être défini dans JSL.Vous trouverez ci-dessous un script simple qui vous montre une façon de changer le style de ligne.
Noms par défaut ici ( 1 ) ;
dt = Ouvrir ( "$SAMPLE_DATA/Grande classe.jmp" ) ;
ColY = "hauteur" ;
// La valeur de lstyle peut être définie en fonction de
// la colonne utilisée pour la colonne Y
// (ie If(YCol == "Profit", lstyle="Dotted", lstyle="Solid"))
le style = "Pointé" ;
Générateur de graphiques (
Taille ( 528 , 447 ) ,
Afficher le panneau de configuration ( 0 ) ,
variables ( X ( : âge ) , Oui ( Comme colonne ( ColY ) ) ) ,
Éléments ( Doubler ( X , Oui , Légende ( 4 ) ) ) ,
Envoyer vers le rapport (
Expédition ( {} , "400" , ScaleBox ,
{ Modèle de légende ( 4 , Propriétés ( 0 , { Style de ligne ( le style )} ) )} )
)
) ;
