Faltan datos al exportar varios gráficos de caja con el script.Soy nuevo en JMP y tengo problemas al exportar varios diagramas de caja. Mi objetivo es crear diagramas con variables del eje X agrupadas por otro parámetro. Sin embargo, en el resultado exportado faltan algunos datos del eje X, aunque los diagramas son correctos cuando uso una sola columna específica.
Aquí está mi código:
//桌面創建資料夾帶上當天日期
timestamp = Format Date(Today(), "ddmmyyyy");
desktop_path = Get Environment Variable("USErProfile") || "$DESKTOP";
folder_path = desktop_path || "/JMP_Analysis_" || timestamp ;
CreateDirectory(folder_path);
// Set the output directory to the newly created folder
outputDir = folder_path || "/";
dt = Open(
"$DESKTOP/file/file.xls",
Worksheets( "Sheet1" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 2 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
//將導入EXCEL之JMP存檔
dt << Save(outputDir || "Joe_CrazyFileCR.jmp");
// Identify rows corresponding to "Upper Limit" and "Lower Limit"
upperRow = dt << Get Rows Where(:Site == "Upper Limit");
lowerRow = dt << Get Rows Where(:Site == "Lower Limit");
// Ensure valid row indices for limits
If(N Rows(upperRow) == 0 | N Rows(lowerRow) == 0,
Throw("Error: Missing 'Upper Limit' or 'Lower Limit' row in the data.")
);
// Get the first row indices for upper and lower limits
upperRowIndex = upperRow[1];
lowerRowIndex = lowerRow[1];
// Loop through each column
For( i = 4, i <= N Cols( dt ), i++,
// Get column reference and name
col = Column( dt, i );
colName = col << Get Name;
// Retrieve the limit values for the current column
upperLimit = Num(dt[upperRowIndex, i]);
lowerLimit = Num(dt[lowerRowIndex, i]);
// Create a box plot for the column
bp = dt << Graph Builder(
Show Control Panel( 0 ),
Show Legend( 0 ),
Variables(
X( :Vendor1 ),
Y(col), // Box plot for the current column
Group X( :Vendor2 )
),
Elements( Box Plot( Y, Legend( 0 ) ) ),
// Add Reference Lines for Limits
SendToReport(
Dispatch(
{},
colName, // Use the column name to target the Y-axis scale,
ScaleBox,
{Add Ref Line(upperLimit, "Dashed", "Green", "Upper Limit"),
Add Ref Line(lowerLimit, "Dashed", "Red", "Lower Limit")}
)
)
);
// Save the plot as a JPEG file
bp << savepicture( outputDir || colName || ".jpeg", "JPEG" );
// Close the plot window without saving
);
Close All( data tables, No Save );Y esta es la imagen con los datos faltantes:

Y no hay problema cuando dibujé directamente desde la interfaz de usuario:

Automatización y scriptingmacOSRe: Faltan datos al exportar varios gráficos de caja con el script.¿Puede proporcionarme un ejemplo de sus datos (archivo .jmp)?
Re: Faltan datos al exportar varios gráficos de caja con el script.¡Gracias por responder! Incluyo jmp en el archivo adjunto.
Re: Faltan datos al exportar varios gráficos de caja con el script.Mi suposición inicial es que el generador de gráficos se está creando de forma incorrecta en el script (asegúrese de comparar el script con el que obtiene al crear el gráfico manualmente). Es muy probable que la parte de Elementos sea incorrecta para el diagrama de caja.
bp = dt << Graph Builder(
Show Control Panel(0),
Show Legend(0),
Variables(
X(:Vendor1),
Y(Eval(col)), // Box plot for the current column
Group X(:Vendor2)
),
Elements(Box Plot(X, Y, Legend(1))),
// Add Reference Lines for Limits
SendToReport(
Dispatch({}, colName, // Use the column name to target the Y-axis scale,
ScaleBox,
{Add Ref Line(upperLimit, "Dashed", "Green", "Upper Limit"),
Add Ref Line(lowerLimit, "Dashed", "Red", "Lower Limit")}
)
)
);
También consideraría modificar sus datos de tal manera que elimine las filas con límites de especificación, ya que no es así como realmente le gustaría tener sus datos. Puede almacenarlos en una variable, configurarlos como propiedades de columna o tal vez almacenarlos en variables de tabla.
Re: Faltan datos al exportar varios gráficos de caja con el script.La especificación de sus elementos debe tener seleccionada la variable X así como la variable Y. Su código no la tiene marcada.

Cambie la especificación de elementos a
Elements( Box Plot( X, Y, Legend( 1 ) ) )
Re: Faltan datos al exportar varios gráficos de caja con el script.Sí, ese es el problema... ¡jajaja! Gracias por la ayuda y analizaré todos los detalles la próxima vez...
He confirmado que los valores límite no están incluidos en los dibujos de referencia. Todavía estoy tratando de entender por qué y examinaré más resultados. Actualmente, la única forma que conozco es separar los valores límite con una nueva tabla de datos y hacer referencia a la tabla de datos límite con un código de bucle adicional, lo que es complicado para mí.