Données manquantes lors de l'exportation de plusieurs boîtes à moustaches avec un script.Je suis nouveau sur JMP et je rencontre des problèmes lors de l'exportation de plusieurs graphiques en boîte. Mon objectif est de créer des graphiques avec des variables de l'axe X regroupées par un autre paramètre. Cependant, la sortie exportée manque de certaines données de l'axe X, même si les graphiques sont corrects lorsque j'utilise une seule colonne spécifique.
Voici mon code:
//桌面創建資料夾帶上當天日期
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 );Et voici l'image avec les données manquantes :

Et aucun problème lorsque j'ai dessiné directement via l'interface utilisateur :

Automatisation et scriptsmacOSRé : Données manquantes lors de l'exportation de plusieurs boîtes à moustaches avec un script.Pouvez-vous fournir un exemple de vos données (fichier .jmp) ?
Ré : Données manquantes lors de l'exportation de plusieurs boîtes à moustaches avec un script.Merci pour la réponse ! Jmp est fourni en pièce jointe.
Ré : Données manquantes lors de l'exportation de plusieurs boîtes à moustaches avec un script.Ma première hypothèse est que votre générateur de graphiques est mal construit dans votre script (assurez-vous de comparer votre script à celui que vous obtenez en créant manuellement le graphique). La partie Éléments est probablement incorrecte pour Box Plot
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")}
)
)
);
J'envisagerais également de modifier vos données de manière à supprimer les lignes de limite de spécification, car ce n'est pas vraiment ainsi que vous souhaiteriez avoir vos données. Vous pouvez les stocker dans une variable, les définir comme propriétés de colonne ou peut-être les stocker dans des variables de table.
Ré : Données manquantes lors de l'exportation de plusieurs boîtes à moustaches avec un script.Votre spécification d'éléments doit avoir la variable X sélectionnée ainsi que la variable Y. Votre code ne l'a pas cochée

Modifiez la spécification des éléments en
Elements( Box Plot( X, Y, Legend( 1 ) ) )
Ré : Données manquantes lors de l'exportation de plusieurs boîtes à moustaches avec un script.Oui, c'est bien le problème... mdr ! Merci pour votre aide et j'examinerai tous les détails la prochaine fois...
J'ai confirmé que les valeurs limites ne sont pas incluses dans les dessins de référence. J'essaie toujours de comprendre pourquoi et j'examinerai d'autres résultats. Actuellement, la seule façon que je connaisse est de séparer les valeurs limites avec une nouvelle table de données et de faire référence à la table de données limites avec un code de boucle supplémentaire, ce qui est compliqué pour moi.