Hinzufügen von Einheiten zur Y-Achse eines VariabilitätsdiagrammsIch habe eine Reihe von Testobjekten, die 80 Geräte testen. Ich zeichne das Variabilitätsdiagramm, ich möchte die Einheit zur Y-Achse hinzufügen. Ich habe die Einheiten in einer anderen Spalte. Spaltenname ist der Standardbeschriftungssatz. Gibt es eine Möglichkeit, die Einheiten in das Etikett einzufügen? irgendwelche Skripte verfügbar? Anbei ist das Musterblatt und das Musterformat von Outout, das ich möchte.

Betreff: Hinzufügen von Einheiten zur Y-Achse eines VariabilitätsdiagrammsDanke @txnelson Und @cwillden . beide Skripte funktionieren für die ursprüngliche Frage.
Danke,
Venkat
Betreff: Hinzufügen von Einheiten zur Y-Achse eines VariabilitätsdiagrammsDas ist im Grunde das, was ich für die Trennung gedacht habe.Gute Arbeit, Jim.
Der alternative Ansatz, den ich in Betracht gezogen habe, würde die Teilung vermeiden und die Beschriftung der y-Achse wäre nur eine Einheit.Wenn die Einheit fehlt, habe ich einfach "Unbekannte Einheit" an ihre Stelle gesetzt, aber Sie können dort tun, was Sie wollen.Dieser Ansatz erstellt den „SendToByGroup“-Teil des Skripts.Dies funktioniert gut mit Ihren Beispieldaten:
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^)")));
Hier ist das Ergebnis:
Betreff: Hinzufügen von Einheiten zur Y-Achse eines VariabilitätsdiagrammsHier ist ein Skript, das erzeugt, was Sie wollen, indem es die Einheiten zum Namen der Tests hinzufügt.Ich habe dies mit der mitgelieferten Excel-Datei ausgeführt.Das Skript geht davon aus, dass die Datentabelle vor der Ausführung des Skripts in JMP geöffnet wurde.
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 )
)
);
)
);
Betreff: Hinzufügen von Einheiten zur Y-Achse eines Variabilitätsdiagramms@cwillden danke, ich habe das im beigefügten Format gezeigte Blatt transponiert. Bitte zeigen Sie mir, wie Sie eine Einheit hinzufügen.
Danke
Betreff: Hinzufügen von Einheiten zur Y-Achse eines VariabilitätsdiagrammsIch denke, es wäre in einem breiteren Format einfacher (dh teilen Sie die Spalte "Wert" auf TestInstance auf), aber wenn Sie es im langen Format behalten möchten, könnte der einfachste Ansatz darin bestehen, die Teile von SendToByGroup() in einer Schleife zu erstellen und das Ergreifen der Einheit für jede nach Gruppenebene.Ich kann dir später heute Abend sicherlich dabei helfen, aber ich muss jetzt los.
Betreff: Hinzufügen von Einheiten zur Y-Achse eines VariabilitätsdiagrammsDanke @cwillden Aber ich habe mehr als 200 Testelemente, daher ist diese Methode möglicherweise nicht für diese große Menge von Testelementen geeignet. Hast du eine Idee, es mit der Schleife zu verwenden?
Danke.
Betreff: Hinzufügen von Einheiten zur Y-Achse eines VariabilitätsdiagrammsWenn Sie dies einmal tun müssen, klicken Sie einfach auf die Achsenbeschriftungen und geben Sie ein, was Sie wollen.Wenn Sie dies wiederholt tun müssen, geben Sie ein, was Sie möchten, und speichern Sie das Skript.Richten Sie dieses Skript auf eine beliebige zukünftige Tabelle:
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" )}
)
)
)
)