Hola a todos,
Estoy creando secuencias de comandos en Application Builder. En uno de mis módulos, tengo un Graph Box, con la intención de configurarlo para que muestre un gráfico prefabricado, pero no estoy teniendo mucha suerte. Originalmente estaba pensando que lo más fácil de hacer sería incrustar de alguna manera mi gráfico prefabricado en la ventana del módulo, así que he estado tratando de usar Graph Box como marcador de posición, intentando algo como:
graphBox << Visibility("Collapse");
panelBox << Append( /*graph*/ ) );... pero esto no ha estado funcionando. ¿Potencialmente, la forma más fácil es en realidad escribir los diferentes elementos del gráfico en el cuadro de gráficos individualmente? Soy bastante nuevo en JSL, así que sé que mi enfoque/sintaxis debe ser incorrecto de alguna manera, ¡pero no estoy seguro de cuál sería la mejor/la forma más fácil de hacerlo!
El código para crear el gráfico que quiero (gracias a los usuarios útiles en otra pregunta que publiqué ) es:
Names Default To Here(1);
datafile = Open( "Data.xlsx" );
x_col = Column(datafile, 1);
y_cols = (datafile << Get Column Names())[2::N Cols(datafile)];
var_expr = EvalExpr(
Variables(X(Expr(x_col))
));
var_line = Expr(Line(X));
For Each({col, idx}, y_cols,
y_expr = Expr(Y(Position(1)));
Insert Into(y_expr, NameExpr(col), 1);
Insert Into(var_expr, Name Expr(y_expr));
yline_expr = Parse("Y("||char(idx)||")");
Insert Into(var_line, Name Expr(yline_expr));
);
graphbuild = Eval(Substitute(
Expr(
graphbuild = datafile << Graph Builder(
Size(838, 391),
Show Control Panel(0),
vvv,
Elements(yyy)
)
),
Expr(vvv), Name Expr(var_expr),
Expr(yyy), Name Expr(var_line)
));
/*gb_image = graphbuild << get picture;
graphbuild << Close Window;
New window("time-series plot",
gb_image
);*/Comenté la última parte de este código, porque en realidad prefiero el gráfico resultante con el panel de control simplemente suprimido ("Mostrar panel de control (0)"), en lugar de "<< Obtener imagen", porque esto oculta el Creador de gráficos funcionalidades para el usuario, pero aún permite un gráfico dinámico (ejes que se pueden agarrar y mover, etc.). Si es posible incrustar el gráfico de esta manera, entonces esa es mi ruta ideal.
Agradezco cualquier ayuda.
Gracias,
Estela
Hola Estelle: daré una solución que puede ser útil para generar informes, ya sea que esté dentro de Application Builder o escribiendo directamente en JSL.Cuando inicia plataformas sin una ventana contenedora, la ventana se crea para usted.Una plataforma "en vivo" solo puede tener un informe, por lo que si intenta agregar un informe a una ventana existente, se crea una copia del informe.Esto es un poco más interactivo que crear una imagen, pero tampoco es lo que está buscando.
En el siguiente script de ejemplo, muestro tres formas de agregar contenido a una ventana existente y los resultados tienen diferentes niveles de interactividad:
- En el primer caso, una plataforma de Graph Builder en vivo se integra directamente en una ventana existente.La plataforma no crea otra ventana y no se realiza ninguna copia.
- En la segunda ventana, se agrega una copia del informe, que tiene menos interactividad.Esta es una copia del informe por sí mismo, sin un objeto de plataforma.No tiene conexión con la tabla de datos.
- En la tercera ventana, adjunto una imagen del Graph Builder, que tiene la menor interactividad.
// Create an empty window first
New Window("Interactive Report",
panel = Panel Box("Interactive Report")
);
Wait(2);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Append a Graph Builder to the existing window
// This report will be entirely interactive
// Axes can be changed, and points can be selected
panel << Append(gb = dt << Graph Builder(
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
));
// We could try to create windows from existing platforms
// This will lose some interactivity
// Axes can change, but the selection is fixed
New Window("Report Copy",
panel2 = Panel Box("Report Copy",
)
);
Wait(2);
panel2 << Append(Report(gb)); // creates a copy of the report
// Or we could take a picture of the report
// This is the least interactive result - nothing can change
New Window("Report Picture",
panel3 = Panel Box("Report Picture",
)
);
Wait(2);
panel3 << Append(gb << Get Picture);<BR />
Dentro de una aplicación JMP, debería poder utilizar cualquiera de estos enfoques.El primer enfoque le permitiría agregar a cualquier cuadro que haya creado en la aplicación, solo asegúrese de ejecutar el script Graph Builder dentro del mensaje <