Número programable de cuadros de gráficos múltiples en una nueva ventanaDisculpas si esto responde en otro lugar que no he podido encontrar.
Quiero generar una serie de cuadros gráficos separados dentro de una ventana, en los que luego puedo dibujar formas personalizadas. Debe haber X columnas y filas Y, es decir, el número y el formato deben ser programables.
Me gustaría que se pareciera un poco a la imagen adjunta. Esto se creó con cada caja de gráficos escrita en su totalidad, lo que obviamente no es ideal.
Como un simple punto de partida, intenté esto:
win01 = New Window( "test",
Outline Box( "test",
V List Box(
For( yy = 1, yy <= 5, yy++,
H List Box(
For( xx = 1, xx <= 5, xx++,
aa = xx + 5 * ( yy - 1 );
Graph Box(
framesize( 200, 200 ),
X Scale( 0, 10 ),
Y Scale( 0, 10 ),
X Axis( Inc( 2 ), Minor Ticks( 1 ), Show Major Grid( 1 ), Show Minor Grid( 1 ) ),
Y Axis( Inc( 2 ), Minor Ticks( 1 ), Show Major Grid( 1 ), Show Minor Grid( 1 ) ),
XName( "Die X" ),
YName( "Die Y" ),
Text({1,5}, char(aa) )
)
)
)
)
)
)
);
Pero claro que eso no funcionó. Probablemente necesito incluir esto en algún tipo de expresión de tipo eval (sustituto (expr ())), pero mi JSL está muy oxidado y no estoy seguro de por dónde empezar.
Cualquier sugerencia sería recibida con gratitud.
Muchas gracias,
Mateo

Re: Número programable de cuadros de gráficos múltiples en una nueva ventanaAlgo como esto funcionaría?
Names default to here(1);
vlb = V List Box();
For( yy = 1, yy <= 5, yy++,
vlb << Append(hlb = H List Box());
For( xx = 1, xx <= 5, xx++,
aa = xx + 5 * ( yy - 1 );
Eval(EvalExpr(
hlb << Append(
Graph Box(
framesize( 200, 200 ),
X Scale( 0, 10 ),
Y Scale( 0, 10 ),
X Axis( Inc( 2 ), Minor Ticks( 1 ), Show Major Grid( 1 ), Show Minor Grid( 1 ) ),
Y Axis( Inc( 2 ), Minor Ticks( 1 ), Show Major Grid( 1 ), Show Minor Grid( 1 ) ),
XName( "Die X" ),
YName( "Die Y" ),
Text({1,5}, Expr(char(aa)) )
)
);
));
);
);
win01 = New Window( "test",
Outline Box( "test",
vlb
)
);
Re: Número programable de cuadros de gráficos múltiples en una nueva ventanaGenial, eso funciona bien! Ahora voy a tratar de averiguar por qué funciona.
Muchas gracias,
Mateo
Re: Número programable de cuadros de gráficos múltiples en una nueva ventanaLo siento por mi pereza tardía. Debería haber puesto eso ahí. Aquí está mi cosa general sobre por qué el tuyo no funciona.
JMP hace que las expresiones devuelvan las últimas expresiones en una declaración de pegamento (que es lo que hace el operador;)
x = 1;
y = 2;
// is the same as
glue(x=1, y=2);
//that's why it returns 2 if you run it.
Para los bucles sin embargo no devuelvas lo último. Ellos simplemente corren. Pero incluso si lo hicieran, en un cuadro de visualización como HListbox, solo mostraría lo último (un solo cuadro de gráficos). Cuando se trata de vitrinas, en su construcción. Puede poner declaraciones regulares de pegamento dentro de él para devolver cada caja de visualización.
new window("Test",
x = 2;
textbox("This won't show up");
textbox("This will show up"), //notice this is a comma. The whole glue will return just this last textbox
hlb = hlistbox(); // this will also show up because nothing is after it even though it's a semicolon
);
// to add to the hlistbox dynamically, append is often used.
wait(2);
hlb << Append(Textbox("Some other box"));
Básicamente, en lugar de () dentro de su constructor de hlistbox, créelo con una referencia y luego agréguelo (a ellos) en sus bucles for.
Con su hlb, creo hlb con cada iteración de la fila y añado y luego sobrescribo la referencia porque ya no la necesito.
Espero que esto haga las cosas más claras y no menos.