Bonjour tous le monde,
Je voudrais remplir certaines barres pour les variables spécifiées automatiquement avec des motifs de remplissage prédéfinis. Le nombre de variables, cependant, change et je voudrais le faire en itération en fonction des variables actuellement enregistrées dans une table de données. Dans ce cas, je dois fournir un argument à Fill Pattern () sous forme d'index (qui ne semble pas fonctionner) ou de référence à partir d'une liste, mais pour cela, j'aurais besoin d'une liste de modèles de remplissage. Ensuite, je pourrais utiliser l'index de l'élément dans une liste. J'apprécierais pour de l'aide comment faire cela.
Meilleures salutations
Graph Builder(
Size( 734, 660 ),
Variables( //that would be good to have it in iteration
X( :Run ),
Y( :Param0 ),
Y( :Param1, Position( 2 ) ),
Y( :Param2, Position( 2 ) ),
Y( :Param3, Position( 2 ) ),
// there is much more of such variables to be displayed
),
Elements( Position( 1, 1 ), Points( X, Y, Legend( 455 ) ) ),
Elements( //that would be good to have it in iteration
Position( 1, 2 ),
Bar(
X,
Y( 3 ),
Y( 5 ),
Y( 6 ),
Y( 7 ),
Legend( 454 ),
Bar Style( "Stacked" )
)
),
SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
455,
Properties( 0, {Line Color( 25 )}, Item ID( "Param0", 1 ) )
), Legend Model(
454,
//that would be good to have it in iteration
Properties(
0,
{Fill Pattern( "left slant light" )},
Item ID( "Mittelwert(Param1)", 1 )
),
Properties(
2,
{Fill Pattern( "right slant light" )},
Item ID( "Mittelwert(Param2)", 1 )
),
Properties(
3,
{Fill Pattern( "grid heavy" )},
Item ID( "Mittelwert(Param3)", 1 )
),
// there is much more of such properties
)}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "" )} ),
Dispatch(
{},
"400",
LegendBox,
{Legend Position(
{455, [0], 454, [10, -1, 1, 11]}
), Position(
{0, 10, -1, 1, 11}
)}
)
)
);
ÉDITER:
J'ai commencé à résoudre le problème ci-dessus en utilisant des expressions auxquelles les données peuvent être transmises.
Je voulais définir les propriétés d'une légende d'un graphique à barres dans "for-loop" et l'insérer dans legend_model_expr défini avant la for-loop. Ensuite, je remplacerais cette expression à un endroit approprié dans Graph Builder. Dans ce cas, deux problèmes se sont produits. Premièrement, si les deux recommandations "insérer dans" sont commentées, une erreur se produit:
Nom non résolu: Propriétés lors de l'accès ou de l'évaluation des propriétés. L'utilise-je correctement? Deuxièmement, si je décommente les deux "insérer dans" (ou même l'un d'entre eux), une autre erreur s'affiche: Trop d'arguments lors de l'accès ou de l'évaluation de For.
J'apprécierais pour des indices ce qui me manque. Meilleures salutations.
//pattern list
fill_patterns_shuffled = {"left slant light", "horizontal light", "right slant light", "vertical light"};
//list of parameters, it can change depending on data available
list2 = {"Param1", "Param2", "Param3"};
legend_model_expr = Expr( Legend Model (53) );
For( c = 1, c <= N Items( list2 ), c++,
y_expr3 = Eval(Parse( "Properties( " || char(c-1) || ", {Fill Pattern( \!"" || fill_patterns_shuffled[ c ] || "\!") }, Item ID( \!"Mittelwert(" || char(list2[ c ]) || ")\!", 1 ) ),"
),
),
//write(y_expr3);
//Insert Into( y_expr3, 1 );
//Insert Into( legend_model_expr, Name Expr( y_expr3) );
);ÉDITER:
Ok, en utilisant Eval JMP recherche la fonction "Propriétés", qui n'existe pas, c'est probablement pourquoi une erreur se produit. Cependant, la deuxième erreur persiste.
Ok, je l'ai fait fonctionner. Ci-dessous, j'ai collé un code correct. Meilleures salutations
//legend
legend_model_expr = Expr( Legend Model (26) );
For( c = 1, c <= N Items( list2 ), c++,
y_expr3 = substitute(expr( Properties( c1, {Fill Pattern( fill ) }, Item ID( "Mittelwert(" || name || ")" , 1 ), ), ), expr(c1), c, expr(fill), char(fill_patterns_shuffled[c]), expr(name), list2[c]);
//show(y_expr3);
Insert Into( y_expr3, "");
Insert Into( legend_model_expr, Name Expr( y_expr3) );
);