Graphique à barres empilées JSL pour n nombre de colonnesSalut,
Je voudrais créer un script pour un graphique à barres empilées à partir d'une table de données dont je ne sais pas quelles seront les colonnes.
1. Dispose d'un tableau de données créé avec les colonnes requises
2. Ajoutez un filtre de données pour sélectionner les lignes requises et exclure le reste
2. Devrait créer un graphique à barres empilées à partir des lignes disponibles pour chaque colonne après la première par rapport à la première colonne.
3. Je ne connais pas les noms des colonnes et le nombre exact, à l'exception de la première colonne.
J'ai créé un graphique à barres empilées pour un ensemble de données et ressemble à ce qui suit.
J'ai copié le script du générateur de graphiques et voici à quoi il ressemble.
Graph Builder(
Size( 500, 590 ),
Variables(
X( :BIBID ),
Y( :Name( "Row %(Fail, Column2)" ) ),
Y( :Name( "Row %(Fail, Column3)" ), Position( 1 ) ),
Y( :Name( "Row %(Fail, Column4)" ), Position( 1 ) ),
Y( :Name( "Row %(Fail, Column5)" ), Position( 1 ) ),
Y( :Name( "Row %(Fail, Column6)" ), Position( 1 ) ),
Y( :Name( "Row %(Fail, Column7)" ), Position( 1 ) ),
Y( :Name( "Row %(Fail, Column8)" ), Position( 1 ) )
),
Elements(
Bar(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Legend( 4 ),
Bar Style( "Stacked" )
)
)
);
Ma question est de savoir comment paramétrer les variables (Y) et les éléments (Y) sous Graph Builder via JSL ?
Pass Fail BinPass Fail BinBac de réussite et d'échec
Re: Graphique à barres empilées JSL pour n nombre de colonnesLa ligne ci-dessus ajoute uniquement le premier graphique variable au ppt.
L'ajout de ce qui suit enregistre l'intégralité du graphique dans le ppt.
vdb << append( _vlb );
vdb << enregistrer la présentation ( "C:\Users\MT7575\Documents\analysis1.pptx", Append) ; //ligne ajoutéeRe: Graphique à barres empilées JSL pour n nombre de colonnesSalut Gzmorgan,
Merci d'avoir fourni la solution.
Je peux enregistrer le graphique au format ppt en ajoutant la ligne suivante.
Merci,
Re: Graphique à barres empilées JSL pour n nombre de colonnes" Cela m'étonne toujours de voir à quel point 52 lignes de JSL comprenant des commentaires et des lignes vides peuvent faire tant de choses. " - Absolument!
Re: Graphique à barres empilées JSL pour n nombre de colonnes@mt7575 , lors de l'écriture d'un scénario, il faut répondre à de nombreuses questions ; par exemple, est-ce qu'il s'agit d'un affichage interactif ou de la création d'un graphique et de l'enregistrer au format png ? à un journal ? à PPTX ? Vous n'avez pas mentionné la version de JMP que vous utilisez, quel système d'exploitation vous possédez (il existe quelques différences dans la syntaxe MAC et Windows), ni le niveau de vos compétences JSL. Lorsque vous enseignez ou écrivez sur JSL ou tout autre langage de script, la meilleure façon d'être efficace est de « connaître vos outils », ce qui est une autre façon de dire que vous devez avoir des compétences de base pour écrire ou même maintenir un script que quelqu'un d'autre écrit pour vous.
Vous trouverez ci-joint un script écrit pour un affichage interactif permettant de sélectionner les éléments de X et les Y à tracer.Il utilise les "outils" JSL suivants. Pour chaque élément répertorié pour lequel vous n'avez pas scripté, vous devez passer du temps dans Aide > Index des scripts, en explorant les scripts, les options et les messages.
- Boîtes de présentation : FilterColSelector, ButtonBox, HListBox, VListBox, PanelBox, GraphBuilderBox
- Objets : GraphBuilder, DataFilter, Expressions, Table de données
Ne connaissant pas votre compétence JSL, un bouton Go avec une expression attachée est utilisé à la place s'il s'agit d'une fonction dynamique "OnChange".
J'ai passé un peu de temps à écrire ce script car la documentation de la boîte d'affichage de GraphBuilderBox est manquante dans Compagnon JSL, 2e éd. ; ce script sera utilisé comme exemple pour un addendum au livre. Je sais donc qu'il est parfois difficile de reconnaître tous les outils disponibles. Le script et un exemple de table de données sont utilisés. Le script dépend uniquement du fait que la première colonne du tableau de données sera toujours X. Remarque sur l'écran, cochez Inverse pour utiliser le filtre de données comme option « ne pas utiliser ».
Le script a été testé sur JMP PRO 12, 13 et 14 sous Windows OS.Cela m'étonne toujours de voir à quel point 52 lignes de JSL comprenant des commentaires et des lignes vides peuvent faire tant de choses.

Re: Graphique à barres empilées JSL pour n nombre de colonnesSalut ian_jmp,
Merci pour la réponse. Je joins des exemples de données que le générateur de graphiques utilise pour tracer le graphique à barres empilées.

Table.jpg est une capture d'écran montrant des exemples de données
JMP :
1. J'ai appliqué un filtre de données pour sélectionner les lignes dont le nom de la colonne contient Fail et a une valeur non nulle
2. J'ai tracé les lignes sélectionnées à l'aide d'un générateur de graphiques où la valeur X est BIB_ID et les valeurs Y sont toutes les colonnes d'échec.
JSL :
Je souhaite paramétrer les étapes mentionnées ci-dessus
1. Il n'y aura que la colonne BIB_ID à chaque fois
2. noms de colonnes suivantes ou non. des colonnes changent à chaque fois
But:
1. Je dois écrire du JSL pour le type de données mentionnées dans le Table.jpg pour obtenir un graphique à barres empilées comme ci-joint dans le message précédent.
Re: Graphique à barres empilées JSL pour n nombre de colonnesSi vous recherchez du code fonctionnel, car chaque cas peut être un peu différent. quelques exemples de données aideraient les gens à vous mettre sur la bonne voie.
Pour comprendre l'approche générale, je pense qu'il faut diviser la tâche en deux étapes, à savoir récupérer les colonnes puis utiliser Graph Builder. Pour le premier, vous avez probablement besoin d'un 'ColListBox()' (le filtre de données fonctionne sur les lignes et non sur les colonnes). Recherchez cela dans « Aide > Index des scripts ». Pour la deuxième étape, et comme Graph Builder est très fonctionnel avec de nombreuses options, le JSL requis peut nécessiter un peu de soin.