[Script JLS] : Boucle pour tracer plusieurs graphes ensembleBonjour,
Je suis nouveau dans JMP. C'est un logiciel puissant !
C'est pourquoi je voudrais écrire un script qui peut tracer plusieurs Y à partir de différentes colonnes (chaque n colonne en fait) en fonction d'un X.
Je l'ai écrit grâce à l'interface du générateur de graphes, mais je voudrais le scripter en boucle.
J'ai fait quelque chose comme ça pour tracer la distribution (mais ce n'est pas la même échelle malheureusement...)
//Distributions Std Dev
New Window( "Side by Side",
H List Box(
Distribution(
Continuous Distribution( Column( :median_range_mm ))
);
for ( p = 2, p <= 64, p++,
nom = "median_range_mm " || char(p);
col = Column(nom);
Distribution(
Continuous Distribution( Column( col ), Std Error Bars( 1 ) );
/*SendToReport(
Dispatch(
{"Distributions", Column( col )},
"1",
ScaleBox,
{Min( 1450 ), Max( 1820 ), Inc( 20 ), Minor Ticks( 0 ),
Label Row Nesting( 1 )}
)
)*/
)
)
)
C'est ce que j'ai essayé pour mon problème principal, le résultat est juste une fenêtre d'ouverture du générateur de graphes.
Je voudrais tracer la colonne [ref, ref 1 , ref 2 jusqu'à ref 64] sur l'axe Y et currentTimeMillis sur l'axe X
New Window( "Ref",
H List Box(
Graph Builder(
For (r = 2 , r <= 64, r++,
name = "ref " || char(r);
col = Column(name);
Variables( X( :currentTimeMillis ), Y (Column (col), Position( 1 ) ) ),
Elements(
Points( X, Y(r) , Legend( 29 ) ),
Smoother( X , Y(r), Legend( 30 ) )
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( strTitle )}
)
)
)
)
)
);Merci pour votre aide.
Acclamations
Re: [Script JLS] : Boucle pour tracer plusieurs graphes ensembleOn peut facilement créer des objets de sortie, qui peuvent être créés à l'avance puis affichés à la demande de l'utilisateur.Ou, en raison de la rapidité de JMP, bon nombre de mes applications génèrent des sorties spécifiques au moment de la demande d'un utilisateur.Vous devriez également explorer le sélecteur de colonnes qui permettra à l'utilisateur de sélectionner dans une liste les colonnes à analyser et à afficher.
Re: [Script JLS] : Boucle pour tracer plusieurs graphes ensembleest-il possible d'enregistrer un graphique individuel (comme une liste d'accès facile) pour une utilisation ultérieure au lieu de les tracer tous dans une seule zone de liste H ?merci.
Re: [Script JLS] : Boucle pour tracer plusieurs graphes ensembleJe suis un peu confus ..... mais je propose ce code comme exemple possible de solution.Il ressort du dernier morceau de code que vous avez fourni que vous modifiez les noms des colonnes de votre table de données en "Ref".Étant donné que JMP ne vous autorise pas à avoir 2 colonnes du même nom, la deuxième colonne que vous tentez de renommer "Ref" est en fait nommée "Ref 2".Et cela continue tout au long de la colonne "Ref 64".Je vous suggère également de revérifier votre code pour le nommage de la colonne "currentTimeMillis".Dans votre code, vous renommez en fait cette colonne (du même nom), 64 fois.
Ci-dessous se trouve mon nouveau code ...... il utilise un exemple de table de données ....... les colonnes appelées Ref - Ref 64, sont toutes dans un ordre contigu, mais comme JMP ne s'en soucie vraiment pas, le code sera fonctionnent également pour votre table de données, où les colonnes sont réparties sur vos 700+ colonnes
Names Default To Here( 1 );
// Build some sample data
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
Column( dt, 6 ) << set name( "ref" );
For( i = 7, i <= 69, i++,
Column( dt, i ) << set name( "ref " || Char( i - 5 ) )
);
Column( dt, 5 ) << set name( "currentTimeMillis" );
// Build the JSL code for the Graph Builder
theExpr = "dt << Graph Builder(
Variables(
X( :currentTimeMillis ),
Y( :ref )";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( :ref " || Char( i ) || ", Position( 1 ) )"
);
theExpr = theExpr || "),
Elements(
Points(
X";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( " || Char( i ) || ")"
);
theExpr = theExpr || "
,Legend( 5 )
),
Smoother(
X";
For( i = 2, i <= 64, i++,
theExpr = theExpr || ",Y( " || Char( i ) || ")"
);
theExpr = theExpr || " ,
Legend( 6 )
)
)
)";
// Execute the generated code
Eval( Parse( theExpr ) );
Re: [Script JLS] : Boucle pour tracer plusieurs graphes ensembleMerci pour ta réponse Jim !
Mais j'ai peut-être mal présenté mon problème.
En effet, j'aimerais avoir tout mon tracé sur le même graphique .
De plus, ma colonne Y a déjà été définie toutes les 11 colonnes, et currentTimeMillis n'apparaît qu'une seule fois au début :
//Set columns
For( i = 1, i <=709 , i++,
For ( j = 0, j <= 63, j++,
If ( i == 2, Column(i) << set name( "currentTimeMillis" ),i == 15 + 11*j, Column(i) << set name( "ref" ),
)
)
)Enfin, "__col__" n'a pas été défini ("col" a été défini mais dans une autre fonction de distribution), donc je ne comprends pas pourquoi vous l'avez utilisé ici.
Merci encore.
Re: [Script JLS] : Boucle pour tracer plusieurs graphes ensembleVoici un exemple de comment je le ferais
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
For( i = 6, i <= 69, i++,
Column( dt, i ) << set name( "ref " || Char( i - 5 ) )
);
Column( dt, 5 ) << set name( "currentTimeMillis" );
New Window( "Ref",
hlb = H List Box(
)
);
For( r = 2, r <= 64, r++,
name = "ref " || Char( r );
Eval(
Substitute(
Expr(
outputhlb = H List Box(
Graph Builder(
Variables(
X( :currentTimeMillis ),
Y( Column( __col__ ), Position( 1 ) )
),
Elements(
Points( X, Y( r ), Legend( 29 ) ),
Smoother( X, Y( r ), Legend( 30 ) )
),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( strTitle )}
)
)
)
)
),
Expr( __col__ ), Parse( ":" || name )
)
);
hlb << append( outputhlb );
);