Script JSL : Graph Builder pour tracer toutes les colonnes d'une table de donnéesSalut tout le monde,
Utilisateur de longue date de JMP (novice en jsl scripting), premier poster. J'apprécierais toute aide!
J'écris un script qui fait deux choses :
1. ouvrez un fichier texte, importez les données numériques, puis enregistrez le tableau de données afin de pouvoir l'ouvrir plus tard.
2. utilisez le générateur de graphiques pour tracer toutes les colonnes de « l'axe Y » à la fois
Je n'ai aucun problème avec le point n°1, donc aucun commentaire à ce sujet n'est nécessaire. L'article n°2 me pose des problèmes. Je n'ai pas trouvé de moyen de tracer toutes les colonnes de l'axe y à la fois, sur un seul graphique.
Le tableau de données comporte une colonne de données sur l'axe X (données à utiliser sur l'axe X du graphique résultant), mais il peut contenir une ou plusieurs colonnes de données qui doivent se trouver sur le même axe Y du graphique. J'essaie de comparer visuellement ces données, et utiliser un graphique avec toutes les données tracées est très utile. Je pourrais probablement simplement empiler les données dans un ensemble de données x et un y avec une troisième colonne utilisée pour la superposition, mais je ne veux pas faire cela.
Des idées?
Re : Script JSL : Graph Builder pour tracer toutes les colonnes d'un tableau de donnéesMerci Jim,
Cela a parfaitement fonctionné. Et j'apprécie votre gentil coup de pouce pour lire le manuel - je le ferai encore une fois et j'espère en conserver quelques pour cent supplémentaires. Cependant, je n'apprends pas toujours grâce au manuel, et c'est pourquoi je suis venu ici. Honnêtement, il m'aurait fallu environ 5 heures pour comprendre ce que vous avez fait, j'apprécie donc votre approche experte car elle m'a fait gagner un temps précieux et m'a montré quelque chose de nouveau que je pourrai utiliser à l'avenir. Acclamations
Re : Script JSL : Graph Builder pour tracer toutes les colonnes d'un tableau de données- Vous devez lire le guide de script
- Je vous avais fourni un script qui vous montrait à quoi devait ressembler le JSL pour créer votre graphique, ou du moins mon interprétation du graphique que vous souhaitiez.
- Ma suggestion pour l'exécuter de manière interactive est de vous donner un moyen de produire le graphique comme vous le souhaitez, puis tout ce que vous avez à faire est de demander à JMP de générer le script pour le graphique, qui vous montre ensuite ce dont vous avez besoin. à créer pour produire le graphique.
- J'ai joint un script qui prend en compte le tableau de données sur la capacité des semi-conducteurs, puis en utilisant toutes les colonnes continues, il produit le graphique superposé.La première colonne continue est utilisée comme colonne X et le reste est utilisé comme plusieurs colonnes Y.
- Toutes les fonctions utilisées dans le script sont documentées dans l'index des scripts.Cependant, l'apprentissage des différents outils et structures est ce qui vous permettra de créer vos scripts créés de manière indépendante.
- Le groupe de discussion communautaire est là pour vous aider lorsque vous rencontrez des difficultés pour comprendre certains composants de JSL.
- Des exemples de construction d'analyses, de graphiques, etc. à partir d'un tableau de données dynamiques d'entrée sont disponibles tout au long des discussions sur le site de la communauté.Il faut se tourner vers les discussions déjà publiées pour trouver des solutions
-
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// Get the column names in the data table
colList = dt << get column names( string, continuous );
// Start building the command required that when run will create
// the desired chart
theExpr = "Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :" || colList[1] || " ),
Y( :" || colList[2] || " )";
// Repeat the operation for the remaining columns in the list
For( i = 3, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y( :" || colList[i] || ", Position( 1 ) )"
);
// Add in the element descriptions
theexpr = theExpr || "),
Elements(
Points(
X";
// Repeat for the remaining Y columns
For( i = 2, i <= N Items( colList ), i++,
theExpr = theExpr || ",Y(" || Char( i ) || ")"
);
theExpr = theExpr || ",Legend( 5 ));";
// Execute the generated commands
Eval( Parse( theexpr ) );Re : Script JSL : Graph Builder pour tracer toutes les colonnes d'un tableau de donnéesSalut Jim,
Merci pour la réponse opportune! Votre message décrit exactement ce que je veux que le script fasse, non, je ne le fais pas de manière interactive. Le graphique doit être créé à l'aide d'un script, de sorte que lorsque j'exécute le script, il :
1. ouvre un fichier texte et charge toutes les données dans une table de données, enregistre la table de données (j'ai déjà terminé cette partie du script sans problème).
2. crée un tracé unique de toutes les colonnes de données y par rapport à la colonne de données x (c'est pour cela que j'ai besoin d'aide)
Le fichier de données peut contenir n'importe quel nombre de colonnes de données y (avec des noms différents), mais il n'y a toujours qu'une seule colonne de données x. Le script de chargement que j'ai déjà écrit charge toutes les données et nomme les colonnes.Je ne sais pas à l'avance combien de colonnes de données y j'ai jusqu'à ce que le fichier soit chargé dans une table de données.
Ce que je pensais au départ, c'était d'envoyer une liste de colonnes à la variable "Y" dans le générateur de graphiques, mais je ne sais pas si cela est possible. Ouvert également à d'autres suggestions, mais je voudrais conserver la structure de la table de données d'une colonne de données x, avec de nombreuses colonnes de données y (c'est-à-dire que je ne veux pas empiler les données).
-Dave
Re : Script JSL : Graph Builder pour tracer toutes les colonnes d'un tableau de donnéesSi vous exécutez le générateur de graphiques de manière interactive, tout ce que vous avez à faire pour tracer plusieurs colonnes sur l'axe Y est de saisir toutes les colonnes que vous souhaitez représenter graphiquement et de les faire glisser vers la zone de dépôt Y.

Le JSL pour ce faire est ci-dessous
names default to here(1);
dt=open("$SAMPLE_DATA/semiconductor capability.jmp");
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables(
X( :NPN1 ),
Y( :PNP1 ),
Y( :PNP2, Position( 1 ) ),
Y( :NPN2, Position( 1 ) ),
Y( :PNP3, Position( 1 ) ),
Y( :IVP1, Position( 1 ) ),
Y( :PNP4, Position( 1 ) ),
Y( :NPN3, Position( 1 ) ),
Y( :IVP2, Position( 1 ) )
),
Elements(
Points(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 5 )
),
Smoother(
X,
Y( 1 ),
Y( 2 ),
Y( 3 ),
Y( 4 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Y( 8 ),
Legend( 6 )
)
)
);