Ajouter une unité à l'axe Y d'un graphique de variabilitéJ'ai un ensemble d'éléments de test testés sur 80 appareils. Je trace le graphique de variabilité, je veux ajouter l'unité à l'axe Y. J'ai les unités dans une colonne différente. Le nom de la colonne est le jeu d'étiquettes par défaut. Existe-t-il un moyen d'ajouter les unités à l'étiquette ? des scripts disponibles? ci-joint est la feuille d'échantillon et le format d'échantillon de outout que je veux.

Re : Ajouter une unité à l'axe Y d'un graphique de variabilitéMerci @txnelson et @cwillden . les deux scripts fonctionnent pour la question d'origine.
Merci,
Venkat
Re : Ajouter une unité à l'axe Y d'un graphique de variabilitéC'est effectivement ce que je pensais pour le split.Joli travail, Jim.
L'approche alternative que j'envisageais éviterait la scission et l'étiquette de l'axe y serait simplement une unité.Si l'unité est manquante, je mets simplement "Unité inconnue" à sa place, mais vous pouvez y faire ce que vous voulez.Cette approche construit la partie "SendToByGroup" du script.Cela fonctionne bien avec vos exemples de données :
Names Default to Here(1);
dt = Current Data Table();
/**** Get units for each level of TestInstance ***/
testList = Associative Array(dt:TestInstance) << get keys;
unitList = {};
for(i = 1, i<=N Items(testList), i++,
temp = dt:Unit[min(dt << Get Rows Where(:TestInstance == testList[i]))];
Insert Into(unitList, If(Is Missing(temp),"Unknown Unit", temp ));
);
unitArray = Associative Array(testList, unitList);
/**** Build the Var Chart Script ****/
varChartStr = "Variability Chart(
Y( :value ),
X( :PackageID ),
Std Dev Chart( 0 ),
By( :TestInstance )";
//Loop through levels of TestInstance to add the unit label for the y-axis
for(i=1, i<= N Items(testList), i++,
varChartStr = varChartStr || Eval Insert("\[,
SendToByGroup(
{:TestInstance == "^testList[i]^"},
SendToReport(
Dispatch(
{"Variability Gauge TestInstance=^testList[i]^",
"Variability Chart for value"},
"value",
TextEditBox,
{Set Text( "^unitArray[testList[i]]^" )}
)
)
)]\");
);
//Close the script
varChartStr = varChartStr || "
);";
//Run the script
eval(parse(varChartStr));
//Add the script to the data table
Eval(Parse(Eval Insert("dt << New Script(\!"Variability Chart\!", ^varChartStr^)")));
Voici le résultat :
Re : Ajouter une unité à l'axe Y d'un graphique de variabilitéVoici un script qui produit ce que vous voulez en ajoutant les Unités au nom des Tests.J'ai couru cela contre le fichier Excel qui a été fourni.Le script suppose que la table de données s'est ouverte dans JMP avant l'exécution du script.
Names Default To Here( 1 );
// This script assumes you have opened the Excel file as a JMP Data Table
dt = Current Data Table();
// Split the data into the proper form for analysis
dtSplit = dt << Split( Split By( :TestInstance ), Split( :value ), Remaining Columns( Drop( :Unit ) ), Sort by Column Property );
// Create a data table to determine the units for each test
dtUnits = dt << Summary( Group( :TestInstance, :Unit ), Freq( "None" ), Weight( "None" ), Link to original data table( 0 ) );
// Loop across the data table and add the Units to the different Test Columns in the data table
For( i = 1, i <= N Rows( dtUnits ), i++,
If( dtUnits:Unit[i] != "",
Column( dtSplit, dtUnits:TestInstance[i] ) << set name(
Column( dtSplit, dtUnits:TestInstance[i] ) << get name || " ( " || dtUnits:Unit[i] || " )"
)
)
);
// Delete the Units data table since it is no longer needed
close( dtUnits, nosave );
// Create a window to place all of the charts into
nw = New Window( "Variability Chart by PackageID", vlb = V List Box() );
// Get all of the column names
colNames = dtSplit << get column names( string, numeric );
// Loop across all of the columns and when a Test column is found,
// then create a chart for it
For( i = 1, i <= N Items( colNames ), i++,
If( Contains( colNames[i], "Test" ) == 1,
testList = ":Name(\!"" || colNames[i] || "\!")";
Eval(
Substitute(
Expr(
vlb << append( dtSplit << Variability Chart( Y( __theList__ ), X( :PackageID ), Std Dev Chart( 0 ) ) )
),
Expr( __theList__ ), Parse( testList )
)
);
)
);
Re : Ajouter une unité à l'axe Y d'un graphique de variabilité@cwillden merci, j'ai transposé la feuille indiquée dans le format joint. Veuillez me montrer la façon d'ajouter une unité.
Merci
Re : Ajouter une unité à l'axe Y d'un graphique de variabilitéJe pense que ce serait plus facile dans un format plus large (c'est-à-dire diviser la colonne "valeur" sur TestInstance), mais si vous voulez le conserver dans le format long, l'approche la plus simple pourrait être de construire les parties SendToByGroup() dans une boucle et saisir l'unité pour chacun par niveau de groupe.Je peux certainement t'aider plus tard ce soir, mais je dois courir tout de suite.
Re : Ajouter une unité à l'axe Y d'un graphique de variabilitéMerci @cwillden mais j'ai plus de 200 éléments de test, donc cette méthode peut ne pas convenir à ce grand ensemble d'éléments de test. Avez-vous une idée pour l'utiliser avec la boucle?
merci.
Re : Ajouter une unité à l'axe Y d'un graphique de variabilitéSi vous devez le faire une fois, cliquez simplement sur les étiquettes des axes et tapez ce que vous voulez.Si vous devez le faire à plusieurs reprises, tapez ce que vous voulez et enregistrez le script.Faites pointer ce script vers n'importe quelle future table :
Variability Chart(
SendToByGroup( {:TestInstance == "Test1"} ),
Y( :value ),
SendToByGroup( {:TestInstance == "Test1"}, Y( :value ) ),
SendToByGroup( {:TestInstance == "Test2"}, Y( :value ) ),
SendToByGroup( {:TestInstance == "Test3"}, Y( :value ) ),
SendToByGroup( {:TestInstance == "Test4"}, Y( :value ) ),
X( :PackageID ),
Std Dev Chart( 0 ),
By( :TestInstance ),
SendToByGroup(
{:TestInstance == "Test1"},
SendToReport(
Dispatch(
{"Variability Gauge TestInstance=Test1",
"Variability Chart for value"},
"value",
TextEditBox,
{Set Text( "Unknown" )}
)
)
),
SendToByGroup(
{:TestInstance == "Test2"},
SendToReport(
Dispatch(
{"Variability Gauge TestInstance=Test2",
"Variability Chart for value"},
"value",
TextEditBox,
{Set Text( "mA" )}
)
)
),
SendToByGroup(
{:TestInstance == "Test3"},
SendToReport(
Dispatch(
{"Variability Gauge TestInstance=Test3",
"Variability Chart for value"},
"value",
TextEditBox,
{Set Text( "uA" )}
)
)
),
SendToByGroup(
{:TestInstance == "Test4"},
SendToReport(
Dispatch(
{"Variability Gauge TestInstance=Test4",
"Variability Chart for value"},
"value",
TextEditBox,
{Set Text( "mA" )}
)
)
)
)