Bonjour,
J'ai pour tâche de scripter certaines visualisations sous forme de scripts de table.Normalement c'est simple. La partie approximative concerne les lignes de référence qui doivent référencer d'autres sources lorsque le script est en cours d'exécution.En raison des références contenues dans deux fonctions qui n'acceptent normalement pas les variables de l'extérieur, découvrir comment utiliser les manipulations d'expression pour insérer ces valeurs est quelque chose qui dépasse actuellement mon niveau de compétence. Il y a de multiples obstacles à surmonter.
- Fonctions qui n'acceptent pas bien les variables extérieures
- var1 = 1 ;
var2 = 2 ;
Dt << Nouveau script( "exemple", print( var1 + var2 ) ); - Notez que les variables sont définies hors du script de table. Il s'agit d'une exigence, car les chiffres seront référencés à partir d'un tableau de données.
- Expédition()
- Pour les valeurs à l'intérieur de cela, elles doivent être des valeurs statiques et clairement énoncées
- Travailler avec des expressions qui ne contiennent pas de fonctions
- exemple = expr( Nouveau Script() );
titre = "test" ;
insérer dans( exemple, titre ); // show(example) = Nouveau script( "test" )
// Plus tard lors de l'insertion de colonnes dans l'axe des x, comme à la ligne 22 de l'exemple…
x_vide = expr( X() );
x_cols = { :col1, :col2 } ;
insérer dans( x_empty, x_cols[1] ); // les erreurs sortent, JMP ne sait pas ce qu'est X() - Cela me dit que d'une manière ou d'une autre, X() doit être non évalué, mais autorise toujours les insertions d'éléments, ce que les noms expr() et expr() sont censés faire, mais ils ne fonctionnent pas dans ce cas.
Le script d'exemple contient un exemple simplifié de ce que je veux accomplir. Les titres et les numéros de la table nouvellement générée doivent être insérés dans le script de table, avant que la fonction ne soit exécutée pour être insérée dans Big Class. J'ai un exemple de base de cela au bas du script.
Names default to here(1);
clear log();
// Reference table
// Used to populate data in table script below for dt( big )
dt = New Table( "Example",
Add Rows(2),
New Column( "Growth Label", Character, Nominal, Set Values( { "Tall", "Short" } ) ),
New Column( "Height tag", Numeric, Continuous, Set Values( { 67.5, 60 } ) ),
);
// Example table
big = open( "$SAMPLE_DATA/Big Class.jmp" );
// Plain example - vis added as table script * works *
big << New Script( "Example",
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Fit to Window,
Set α Level( 0.05 ),
Variables( X( :weight ), X( :age ), Y( :height ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"height",
ScaleBox,
{Add Ref Line( 67.5, "Dashed", "Medium Dark Green", "Tall", 1 ),
Add Ref Line( 60, "Dashed", "Medium Dark Red", "Short", 1 )}
)
)
)
);
// Needed info for below
vis_x = { :weight, :age };
vis_y = { :height };
// Modified example - vis added as table script * not working *
big << New Script( "Example",
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Fit to Window,
Set α Level( 0.05 ),
Variables( X( vis_x[1] ), X( vis_x[1] ), Y( vis_y[1] ), Color( :sex ) ),
Elements( Points( X, Y, Legend( 4 ) ) ),
SendToReport(
Dispatch(
{},
"height",
ScaleBox,
{Add Ref Line( big:Height tag[1], "Dashed", "Medium Dark Green", big:Growth Label[1], 1 ),
Add Ref Line( big:Height tag[2], "Dashed", "Medium Dark Red", big:Growth Label[2], 1 )}
)
)
)
);
// Example: expression manipulations
var1 = 10; // represents some reference number, from somewhere
var2 = 1; // represents some reference number, from somewhere
expr_test = eval expr( expr(var1) + expr(var2) );
expr_begin = expr( New Script( "Var replacement" ) );
insert into( expr_begin, name expr( expr_test ) );
show( expr_begin );
eval( eval expr( big << expr( name expr( expr_begin ) ) ) ); // Script contains: 10 + 1
/* Notice how the table script "Var replacement" in big doesn't contain var1 & var2,
it contains the values they represent. This is what I want to do. */
close( dt, "No Save" );La recherche de "lignes de référence" donne pas mal de résultats dans les forums de la communauté. L'exemple le plus proche que j'ai trouvé, jusqu'à présent, sont les liens ci-dessous.
https://community.jmp.com/t5/Discussions/Is-there-a-way-to-automatically-draw-ref-lines-at-the-peak-of/mp/87721/highlight/false#M38710
https://community.jmp.com/t5/Discussions/Fill-color-for-multiple-reference-lines/mp/273205