Sentencia If dentro del generador de gráficos para la funcionalidad SendToReportHola,
Quiero poder cambiar el eje Y del gráfico solo cuando el eje Y es una determinada columna (por ejemplo, errores). Pero parece que el creador de gráficos no reconoce el if dentro de él. Sin embargo, esto funciona bien cuando no uso la instrucción if. Pero quiero poder usar esta misma función gráfica para todo tipo de gráficos.
graph_func = function({stackdt,title},{Default Local},
gb = Graph Builder(
Size( 1342, 905 ),
Variables(
X( :names ),
Y( as column(title) ),
Group X( :Type ),
Overlay( :GROUPs )
),
Elements( Box Plot( X, Y, Legend( 11 ) ) ),
Local Data Filter(
Add Filter(
columns( :Type),
Display( :Type, Size( 160, 30 ), List Display )
) ),
if(contains(title,"error"),
SendToReport(
Dispatch(
{},
title,
ScaleBox,
{Scale( "Log" ), Format( "Scientific", 10 ), Min( 0.00001 ), Max( 0.03 ),
Inc( 1 ), Minor Ticks( 1 )}
)
) , ) );
return(gb);
);Re: Si la declaración dentro del generador de gráficos para la funcionalidad SendToReportComo mencioné en otras discusiones, Send To Report () está destinado a que JMP pueda guardar un script para usted y capturar cualquier personalización que pueda haber hecho. Hay mejores formas de personalizar su ventana cuando está escribiendo un script. Por ejemplo,
gb = dt << Graph Builder( /* usual plot arguments */ );
If( error plot,
Report( gb )[AxisBox(1)] << Min( 0 ) << Max( 10 ) << Inc( 1 );
);
Lanzaría Graph Builder con la personalización predeterminada (no para errores de trazado). Tendría una forma de marcar la excepción (errores de trazado) y usar la función If () para determinar si se deben enviar mensajes al objeto. En el ejemplo anterior, el argumento de la trama de error podría ser una bandera (variable booleana) o podría ser una expresión que devuelve verdadero cuando traza los errores. Los mensajes se envían al eje vertical en este caso para cambiar la escala. Puede usar esta ilustración para crear cualquier personalización que desee.
Re: Si la declaración dentro del generador de gráficos para la funcionalidad SendToReportUna manera más fácil de hacerlo es pasando mensajes a los objetos de visualización creados por Graph Builder. Los mensajes se pueden pasar después de que se produce el gráfico. Todos estos mensajes están documentados en el Índice de secuencias de comandos
Ayuda ==> Índice de secuencias de comandos
y luego busque el objeto AxisBox
Aquí hay una modificación a su código que debería funcionar
graph_func = Function( {stackdt, title},
{Default Local},
gb = Graph Builder(
Size( 1342, 905 ),
Variables( X( :names ), Y( As Column( title ) ), Group X( :Type ), Overlay( :GROUPs ) ),
Elements( Box Plot( X, Y, Legend( 11 ) ) ),
Local Data Filter( Add Filter( columns( :Type ), Display( :Type, Size( 160, 30 ), List Display ) ) )
);
If( Contains( title, "error" ),
report(gb)[AxisBox(2)] << min(0.00001) << Max( 0.03 ) << Inc( 1 ) <<MINOR ticks=""></MINOR>Re: Si la declaración dentro del generador de gráficos para la funcionalidad SendToReportGracias por responder. Intenté la segunda solución, ya que parecía sencilla con lo que estoy haciendo. Funciona pero el eje Y tiene solo 2 puntos ahora, es decir, mín. Y máx. ¿Cómo hago para que muestre la escala en Yaxis?Re: Si la declaración dentro del generador de gráficos para la funcionalidad SendToReport¿Podría proporcionar su JSL y una imagen de la salida de la pantalla?
Re: Si la declaración dentro del generador de gráficos para la funcionalidad SendToReport
Realmente no puedo suministrar el JSL o el gráfico completo debido a la política de privacidad de la compañía, pero así es como se ve el eje X. Hay 3 grupos en el eje Y del grupo y errores en el eje Y. Quiero poder ver todos los puntos intermedios en el eje y y no solo el mínimo y el máximo, como es.
Además, cuando divido un grupo diferente según la página, esto solo se aplica al primer gráfico y no al siguiente.