Es posible que desee crear un ejemplo más trivial basado en una tabla de datos estándar a la que todos tenemos acceso, luego podemos tener algún código que podamos ejecutar y comentar.
He puesto la gráfica de contorno en un contenedor de caja de presentación y parece funcionar bien.
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>
Para tu información
cuando está utilizando la eval (parse (evalinsert (... ))) construcción no es necesario "char" las variables. Para que puedas escribir
SB^i^ = Slider Box( . . . )
El contenido ya es una cadena, por lo que el carácter es redundante.
Estoy tratando de usar los controles deslizantes para actualizar una tabla, luego los modelos en las columnas del modelo se actualizan para predecir los nuevos valores (en un mapa de obleas) que luego vuelven a dibujar la gráfica de contorno. El problema es que cuando se activa el recálculo automático y se agregan los controles deslizantes a la gráfica de contorno, los controles deslizantes se desechan en el recálculo.
Puedo mantener los controles deslizantes y la gráfica de contorno en ventanas separadas, pero luego tengo un problema si trabajo en un proyecto JMP y tengo que escribir el diseño del informe de la pestaña.
No es necesario que permanezca dentro de una tabla: gráfico con formato de controles deslizantes, también podríamos hacerlo todo en la memoria, pero no creo que reconstruir la gráfica de contorno en el código sea divertido. El generador de gráficos también está bien siempre que pueda dibujar mapas de puntos.
La solución actual en esta nueva ventana () funciona, pero cuando muevo los controles deslizantes, estoy eliminando y volviendo a colocar el trazado de contorno actualizado, que es un poco un trabajo pirateado y lento. ¡Así que estoy buscando una mejor solución!
Ejemplo de tabla adjunta.
Ejemplo de script adjunto y aquí:
Los nombres predeterminados aquí (1); RangeMin = Matriz asociativa (["C flow" => 180, "D flow" => 165, "Time" => 33, "Pressure" => 200, "Temp" => 610, "A flow" => 180 , "Flujo B" => 165]); RangeMax = Matriz asociativa (["C flow" => 355, "D flow" => 325, "Time" => 44, "Pressure" => 350, "Temp" => 630, "A flow" => 355 , "Flujo B" => 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 = Tabla de datos actuales (); sjaakie = Nueva ventana ("test", testlist = h cuadro de lista ()); CP = GraphingTable << Trazado de contorno (X (: X,: Y), Y (: Modelos), Mostrar puntos de datos (1), Rellenar áreas (1), Etiquetar contornos (0), Color Theme ("Spectral"), Recálculo automático (1)); ValuesOutlineBox = Cuadro de esquema ("Valores", SliderList = v cuadro de lista ()); Para (i = 1, i <= n elementos (XColumns), i ++, SliderList << append (cuadro de lista h (Cuadro de texto (XColumns [i]), eval (parse (eval insert ("Var ^ char (i) ^ = ^ SliderVars [i] ^; SB ^ char (i) ^ = Cuadro deslizante (^ RangeMin << obtener valor (XColumns [i]) ^, ^ RangeMax << obtener valor (XColumns [i]) ^, Var ^ char (i) ^, NEB ^ char (i) ^ << set (Var ^ char (i) ^); ^ Columna (GraphingTable, XColumns [i]) ^ << set valores (J (n filas (), 1, Var ^ char (i) ^)); testlist [2] << Delete Box (); wait (0.1); testlist << append (report (CP));); "););), eval (parse ( eval inserte ("NEB ^ char (i) ^ = Cuadro de edición de números (Var ^ char (i) ^, << setfunction (Function ({this}, Var ^ char (i) ^ = this << get; SB ^ char (i) ^ << invalua; ^ Columna (tabla de gráficos, columnas X [i]) ^ << establecer valores (J (n filas (), 1, Var ^ char (i) ^)); lista de prueba [2] << Eliminar Casilla (); esperar (0.1); lista de prueba << añadir (informe (CP));))); "););),))); testlist << append (ValuesOutlineBox); testlist << añadir (informe (CP)); sjaakie << Traer ventana al frente ();