Créer une boucle pour afficher les lignes de référence dans un graphiqueBonjour à tous,
J'utilise JMP15 depuis 1 an mais je commence tout juste à m'intéresser aux scripts.
Je voudrais écrire un script pour afficher les lignes de référence dans un graphique, basé sur un tableau.
J'ai 2 tables : data (sur lesquelles j'exécute le script, pour tracer value=f(time)) et dates, contenant une colonne avec les dates correspondant aux lignes de références que j'aimerais avoir dans le graphique.
Ces tableaux sont joints à mon message.
Voici mon script actuel, affichant une ligne de référence basée sur le premier élément des dates du tableau, la date de la colonne.
ref1 = dates:name( "date" )[1];
Graph Builder(
Variables( X( :time ), Y( :value ),Page(:cat) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
SendToReport( Dispatch( {}, "time", ScaleBox( 2 ), {Add Ref Line( ref1, "Dotted", "Red", "", 2 )} ) )
);Je souhaite créer une boucle "For" pour créer automatiquement des lignes de référence pour chaque valeur du tableau "dates".
Voici ce que j'ai essayé :
ref1 = dates:name( "date" )[1];
Graph Builder(
Variables( X( :time ), Y( :value ),Page(:cat) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
SendToReport( Dispatch( {}, "time", ScaleBox( 2 ),
{
For( i = 1, i <= N row( dates), i++,
f = dates [ i ];
Add Ref Line( f, "Dotted", "Blue", "", 2 )
);
})
);Mais lorsque j'exécute le script, aucune ligne de référence n'apparaît.
Comment puis-je résoudre ce problème ?
Dernière question : si je n'ajoute pas "Page(:cat)" dans les variables du graphique, aucune ligne de référence n'apparaît...
Merci pour votre aide !!
Automatisation et scriptsPersonnalisation de masseIngénierie Qualité et ProcédésRe : Créer une boucle pour afficher les lignes de référence dans un graphiqueVoici une solution qui n'utilise pas d'arbres d'affichage.
Names Default To Here( 1 );
dt = Data Table( "data" );
dts = Data Table( "dates" );
// Get the unique values of cat
summarize(cat_unique = by(dt:cat));
gb = dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :time ), Y( :value ), Page( :cat ) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
);
// Add reference lines
for (c = 1, c <= nitems(cat_unique), c++,
scbox = c + 1;
for (i = 1, i <= nrows(dts), i++,
ref = dts:date[i];
gb << SendToReport(
Dispatch( {}, "time", ScaleBox( scbox ), {Add Ref Line( ref, "Dotted", "Red", "", 2 )} )
);
);
);Re : Créer une boucle pour afficher les lignes de référence dans un graphiqueMerci Jim pour votre réponse rapide, vraiment utile!
Re : Créer une boucle pour afficher les lignes de référence dans un graphiqueBienvenue dans la communauté de discussion !
Voici une façon d'ajouter les lignes de référence

La documentation sur l'utilisation des arborescences d'affichage pour manipuler la sortie JMP se trouve dans l'index de script.
Names Default To Here( 1 );
dt = Data Table( "data" );
dates = Data Table( "dates" );
ref1 = dates:name( "date" )[1];
gb = Graph Builder(
Variables( X( :time ), Y( :value ), Page( :cat ) ),
Elements( Points( X, Y, Legend( 4 ), Summary Statistic( "Mean" ) ) ),
SendToReport(
Dispatch( {}, "time", ScaleBox( 2 ), {Add Ref Line( ref1, "Dotted", "Red", "", 2 )} )
)
);
// Add reference lines
For( i = 1, i <= N Rows( dates ), i++,
// Add for Cat = B
(Report( gb )[axisbox( 1 )]) << add ref line( dates:date[i], "Dotted", "Blue", "", 2 );
// Add for Cat = C
(Report( gb )[axisbox( 3 )]) << add ref line( dates:date[i], "Dotted", "Blue", "", 2 );
);