J'essaie d'utiliser des curseurs pour mettre à jour une table, puis les modèles dans les colonnes de modèle sont mis à jour pour prédire de nouvelles valeurs (sur une carte de plaquette), ce qui redessine ensuite le contourplot. Le problème est que lorsque vous activez le recalcul automatique et que vous ajoutez les curseurs au tracé de contour, les curseurs sont rejetés lors du recalcul.
Je peux conserver les curseurs et le contourplot dans des fenêtres séparées, mais j'ai un problème si je travaille dans un projet JMP et je dois entrer dans le script de la mise en page du rapport d'onglet.
Je n'ai pas besoin de rester dans un tableau - graphique au format sliders, on pourrait aussi tout faire en mémoire mais je ne pense pas que reconstruire le contourplot en code soit amusant. Le générateur de graphiques convient également tant que je peux dessiner des cartes de points.
La solution actuelle dans cette nouvelle fenêtre () fonctionne, mais lorsque je déplace les curseurs, je supprime et rattache le tracé de contour mis à jour, ce qui est un peu un travail de piratage et lent. Donc je cherche une meilleure solution!

Exemple de tableau ci-joint.
Exemple de script ci-joint et ici :
Names default to here(1);
RangeMin = Associative array(["C flow" => 180,
"D flow" => 165,
"Time" => 33,
"Pressure" => 200,
"Temp" => 610,
"A flow" => 180,
"B flow" => 165]);
RangeMax = Associative Array(["C flow" => 355,
"D flow" => 325,
"Time" => 44,
"Pressure" => 350,
"Temp" => 630,
"A flow" => 355,
"B flow" => 450]);
SliderVars = {620.869565217391, 40.5217391304348, 268.478260869565, 263.260869565217,
288.913043478261, 271.086956521739, 247.608695652174, 263.43, 40.5217391304348,
268.478260869565, 263.260869565217, 288.913043478261, 271.086956521739,
247.608695652174, 620.869565217391, 40.5217391304348, 268.478260869565,
263.260869565217, 288.913043478261, 271.086956521739, 247.608695652174};
XColumns = {"Temp", "Time", "Pressure", "A flow", "B flow",
"C flow", "D flow"};
GraphingTable = Current Data Table();
sjaakie = New window("test", testlist = h list box());
CP = GraphingTable << Contour Plot(
X( :X, :Y ),
Y( :Models ),
Show Data Points( 1 ),
Fill Areas( 1 ),
Label Contours( 0 ),
Color Theme( "Spectral" ),
Automatic Recalc( 1 )
);
ValuesOutlineBox = Outline Box("Values", SliderList = v list box());
For(i=1, i<= n items(XColumns),i++,
SliderList << append(
h list box(
Text box(XColumns[i]),
eval(
parse(
eval insert(
"Var^char(i)^ = ^SliderVars[i]^;
SB^char(i)^ = Slider Box(
^RangeMin << get value(XColumns[i])^,
^RangeMax << get value(XColumns[i])^,
Var^char(i)^,
NEB^char(i)^ << set( Var^char(i)^ );
^Column(GraphingTable, XColumns[i])^ << set values(J(n rows(),1,Var^char(i)^));
testlist[2] << Delete Box();
wait(0.1);
testlist << append(report(CP));
);"
);
);
),
eval(
parse(
eval insert(
"NEB^char(i)^ = Number Edit Box( Var^char(i)^,
<<SETFUNCTION></SETFUNCTION>
POUR VOTRE INFORMATION
lorsque vous utilisez la construction eval(parse(evalinsert( ... ))) vous n'avez pas besoin de "char" les variables.Vous pouvez donc écrire
SB^i^ = Slider Box( . . . )
le contenu est déjà une chaîne, donc le caractère est redondant.
J'ai mis le contourplot dans un conteneur de boîte d'affichage et cela semble fonctionner correctement.
Names default to here(1);
RangeMin = Associative array(["C flow" => 180,
"D flow" => 165,
"Time" => 33,
"Pressure" => 200,
"Temp" => 610,
"A flow" => 180,
"B flow" => 165]);
RangeMax = Associative Array(["C flow" => 355,
"D flow" => 325,
"Time" => 44,
"Pressure" => 350,
"Temp" => 630,
"A flow" => 355,
"B flow" => 450]);
SliderVars = {620.869565217391, 40.5217391304348, 268.478260869565, 263.260869565217,
288.913043478261, 271.086956521739, 247.608695652174, 263.43, 40.5217391304348,
268.478260869565, 263.260869565217, 288.913043478261, 271.086956521739,
247.608695652174, 620.869565217391, 40.5217391304348, 268.478260869565,
263.260869565217, 288.913043478261, 271.086956521739, 247.608695652174};
XColumns = {"Temp", "Time", "Pressure", "A flow", "B flow",
"C flow", "D flow"};
GraphingTable = Current Data Table();
sjaakie = New window("test", testlist = h list box());
CPcontent = VListBox(
GraphingTable << Contour Plot(
X( :X, :Y ),
Y( :Models ),
Show Data Points( 1 ),
Fill Areas( 1 ),
Label Contours( 0 ),
Color Theme( "Spectral" ),
Automatic Recalc( 1 )
)
);
ValuesOutlineBox = Outline Box("Values", SliderList = v list box());
For(i=1, i<= n items(XColumns),i++,
SliderList << append(
h list box(
Text box(XColumns[i]),
eval(
parse(
eval insert(
"Var^char(i)^ = ^SliderVars[i]^;
SB^char(i)^ = Slider Box(
^RangeMin << get value(XColumns[i])^,
^RangeMax << get value(XColumns[i])^,
Var^char(i)^,
NEB^char(i)^ << set( Var^char(i)^ );
^Column(GraphingTable, XColumns[i])^ << set values(J(n rows(),1,Var^char(i)^));
);"
);
);
),
eval(
parse(
eval insert(
"NEB^char(i)^ = Number Edit Box( Var^char(i)^,
<<SETFUNCTION></SETFUNCTION>
Vous voudrez peut-être proposer un exemple plus trivial basé sur une table de données standard à laquelle nous avons tous accès, puis nous pouvons avoir du code que nous pouvons exécuter et commenter.