Gruppiertes Balkendiagramm nach VariableHallo alle,
Das mag wie eine einfache Frage klingen, aber ich habe keinen Weg gefunden, dies zum Laufen zu bringen.
Ich habe einen Test mit mehreren Proben durchgeführt und für jede Probe gibt der Test die Prozentsätze der drei verschiedenen Komponenten aus, aus denen die Probe besteht.
Ich habe eine Datentabelle mit 4 Spalten eingerichtet: 1 für den Probennamen und die anderen 3 für die Prozentsätze der 3 Komponenten.
Ich versuche, ein gruppiertes Balkendiagramm zu erstellen, wie im angehängten Bild gezeigt (in Excel erstellt), in dem die Daten in 3 verschiedene Cluster gruppiert sind, die den 3 Komponenten entsprechen.
Ich weiß, dass ich zuerst versuchen könnte, alle Komponentenspalten zu stapeln ("Clustering by Variable" beschrieben Hier ); Das würde es jedoch zu einer super langen Tabelle machen und schwer zu navigieren sein (ich habe mehrere Arten von Tests, die jeweils unterschiedliche Komponenten ausgeben). Außerdem müsste ich 2 separate Tabellen haben, eine für das ursprüngliche Datenformat, das einfacher zu navigieren ist, und eine andere für die gruppierten Balkendiagramme.
Ich denke an zwei verschiedene Methoden, um dies zu umgehen.
1) Zeichnen Sie für jeden Test die Ergebnisse für jede Komponente nebeneinander auf. Gibt es eine Möglichkeit, dass sie alle dieselbe y-Achse haben?
2) Gibt es bei Verwendung der Spaltenstapelmethode eine Möglichkeit, die beiden Tabellen zu einer zu kombinieren, sodass ich ein gespeichertes Skript in der ursprünglichen Tabelle haben könnte, das die gruppierten Balkendiagramme automatisch generiert, wenn ich darauf klicke? Mir ist bewusst, dass ich das Skript speichern könnte, das die gestapelte Tabelle generiert, aber dann müsste ich immer noch die gruppierten Balkendiagramme neu erstellen.
Danke schön!
Betreff: Geclustertes Balkendiagramm nach VariableDanke! Das habe ich mich gefragt. Es ist jedoch keine große Sache, da, wie Sie sagten, auf das Skript für jede Operation zugegriffen werden kann.
Betreff: Geclustertes Balkendiagramm nach VariableJim,
Danke, dass Sie mich durch Ihren Code geführt haben - macht die Dinge jetzt sehr klar. Kurze Frage: Wenn ich der neuen gestapelten Tabelle mehrere Operationen hinzufügen möchte, muss ich sie trotzdem vor jeder Operation aufrufen, oder? Sagen Sie, wenn ich auch ein Histogramm aus der gestapelten Tabelle zeichnen möchte, füge ich einfach diese folgende Zeile hinzu?
dtStack << Distribution( Continuous Distribution( Column( :Data ) ) );
Betreff: Geclustertes Balkendiagramm nach VariableUm es klarzustellen: Es gibt keine Möglichkeit, alle Ihre Vorgänge in JMP in einem einzigen Skript aufzuzeichnen.Sie können ein Makro auf diese Weise in Excel, aber nicht in JMP aufzeichnen.
Stattdessen kann auf die JSL für jede Plattform, die Sie in JMP ausführen, zugegriffen werden, indem Sie auf das kleine rote Dreieck klicken und eine der Optionen zum Speichern von Skripts auswählen.
Betreff: Geclustertes Balkendiagramm nach VariableLassen Sie mich durchgehen, was ich getan habe, um das Skript zu erstellen, das ich Ihnen bei dieser Diskussion zur Verfügung gestellt habe, um meine Art der Erstellung eines Skripts zu veranschaulichen.
- Sie haben keine Datentabelle angegeben, also musste ich meine eigene Beispieldatentabelle erstellen.
- Da ich Ihnen meine Kopie meiner Beispieldatentabelle zur Verfügung stellen wollte, musste ich mich entscheiden, ob es am besten ist, die Tabelle zu speichern und hochzuladen oder sie einfach in das Skript aufzunehmen.Da es sich um eine sehr bescheidene Größe handelt, habe ich beschlossen, nur das Skript einzufügen.
- Also öffnete ich ein Skriptfenster.
- habe ich manuell eingegeben
Names Default to Here(1);
Dies sollte normalerweise die erste Anweisung jedes Skripts sein.Es stellt sicher, dass die JSL-Variablen in diesem Skript von diesem Skript isoliert werden und andere Skripte nicht stören.
- Ich ging dann zu der von mir erstellten Datentabelle, klickte auf das rote Dreieck im Tabellenbereich und wählte „Copy Table Script“.Dadurch wurde das Skript, das die Tabelle so generiert, wie sie derzeit vorhanden ist, in den Einfügepuffer platziert.
- Ich ging dann zurück zum Skriptfenster und fügte es direkt unter der ersten Zeile in das Skript ein
Names Default to Here(1);<BR />
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Sample",
Character,
"Nominal",
Set Values( {"A", "B", "C", "D", "E"} )
),
New Column( "Component 1",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.828470097854734, 0.8212191631319, 0.842324016243219,
0.882067339960486, 0.872661964339204]
)
),
New Column( "Component 2",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.116772082395202, 0.140967620703167, 0.125925316195233,
0.0770373142695993, 0.113037678561007]
)
),
New Column( "Component 3",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.0547578197500645, 0.0378132161649326, 0.0317506675615479,
0.0408953457699151, 0.0143003570997886]
)
)
);
Ich habe auch dt = vor der Tabellendefinition hinzugefügt, was es ermöglicht, diese Datentabelle mit "dt" zu referenzieren, anstatt eine formellere Referenz von "data table("example")" zu haben.
- Dann fing ich an, interaktiv mit der Datentabelle und dem Graph Builder zu spielen, um herauszufinden, was ich tun musste, um das gewünschte Diagramm zu erstellen.Dies war eine iterative Methode, die mehrere Datentabellenmanipulationen und Graph-Builder-Ausführungen erforderte, bis ich die gewünschten Ergebnisse erzielte.
- Nachdem ich mit den Ergebnissen zufrieden war, habe ich dann geschaut, was nötig war, um die Ergebnisse zu generieren. Es war eine einfache Tabellenmanipulation, bei der die Daten gestapelt wurden, und dann wurde ein Diagrammersteller auf den gestapelten Daten ausgeführt.
- Zuerst musste ich den Skriptcode bekommen.Dieser Code ist im Tabellenbereich der gestapelten Datentabelle leicht verfügbar.Wenn Sie im Tabellenbereich mit der rechten Maustaste auf das grüne Dreieck vor dem Eintrag „Quelle“ klicken, können Sie „Bearbeiten“ auswählen.Dadurch wird die JSL angezeigt, die zum Neuerstellen dieser Datentabelle verwendet werden kann.Ich habe den gesamten Code ausgewählt und in den Einfügepuffer kopiert, direkt nach der bereits vorhandenen JSL im Skriptfenster
Names default to here(1);
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Sample",
Character,
"Nominal",
Set Values( {"A", "B", "C", "D", "E"} )
),
New Column( "Component 1",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.828470097854734, 0.8212191631319, 0.842324016243219,
0.882067339960486, 0.872661964339204]
)
),
New Column( "Component 2",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.116772082395202, 0.140967620703167, 0.125925316195233,
0.0770373142695993, 0.113037678561007]
)
),
New Column( "Component 3",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.0547578197500645, 0.0378132161649326, 0.0317506675615479,
0.0408953457699151, 0.0143003570997886]
)
)
);
dtStack = dt << Stack(
columns( :Component 1, :Component 2, :Component 3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);Beachten Sie, dass ich auch einen Zeiger auf den Stack „dtStack =" hinzugefügt und die lange Referenz auf die ursprüngliche Datentabelle durch die kurze Referenz von „“dt“ ersetzt habe;
- Als nächstes ging ich zur Graph Builder-Ausgabe und klickte auf das rote Dreieck und wählte "Save Script==>To Clipboard".
- Ich habe dann die Zwischenablage (Zwischenspeicher einfügen) in das Skript eingefügt.
Names default to here(1);
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Sample",
Character,
"Nominal",
Set Values( {"A", "B", "C", "D", "E"} )
),
New Column( "Component 1",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.828470097854734, 0.8212191631319, 0.842324016243219,
0.882067339960486, 0.872661964339204]
)
),
New Column( "Component 2",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.116772082395202, 0.140967620703167, 0.125925316195233,
0.0770373142695993, 0.113037678561007]
)
),
New Column( "Component 3",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.0547578197500645, 0.0378132161649326, 0.0317506675615479,
0.0408953457699151, 0.0143003570997886]
)
)
);
dtStack = dt << Stack(
columns( :Component 1, :Component 2, :Component 3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
dtStack << Graph Builder(
Size( 534, 454 ),
Show Control Panel( 0 ),
Variables(
X( :Label ),
X( :Sample, Position( 1 ) ),
Y( :Data ),
Overlay( :Sample )
),
Elements( Bar( X( 1 ), X( 2 ), Y, Legend( 33 ) ) ),
SendToReport(
Dispatch(
{},
"Label",
ScaleBox,
{Label Row( 1, {Automatic Tick Marks( 0 ), Show Major Labels( 0 )} )}
),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
)
)
);Beachten Sie, dass ich "dtStack <<" vor der Graph Builder-Anweisung hinzugefügt habe.Dies ist der beste Weg, um sicherzustellen, dass Graph Builder auf den gestapelten Daten und nicht auf dem Originalcode ausgeführt wird.
Dies ist also der Prozess, der verwendet wird, um ein kombiniertes Skript zu erstellen.Wie Sie sich sicher vorstellen können, können viele verschiedene Plattformen zu einem solchen Skript hinzugefügt werden, wobei sie die ursprüngliche Datentabelle ("dt") oder die gestapelte Datentabelle ("dtStack") verwenden können.Möglicherweise haben Sie auch andere Datentabellenmanipulationen, die Sie hinzufügen müssen usw.
In Bezug auf das Massenkopieren von Skripten, die Sie in einer Datentabelle gespeichert haben, ist mir nicht bekannt, dass ich das tun kann, aber ich hatte selbst kein Problem damit.Meistens versuche ich, ein Skript zu erstellen, nicht meine eigene Datenanalyse.
Betreff: Geclustertes Balkendiagramm nach VariableJa, hört sich an, als hätte ich falsch interpretiert, was du meinst.
Können Sie mehr auf " Tabellenbearbeitungsskripts und Plattformspeicherskripts"-Bit?
Eine Sache, die ich gerade herausgefunden habe, ist, dass ich tatsächlich das gesamte Skript der Datentabelle kopieren könnte. Das allein sollte also für meinen momentanen Bedarf ausreichen. Ich muss immer noch einzelne Berichte zuerst als neue Skripte in der Datentabelle speichern, aber jetzt kann ich sie alle gleichzeitig anstatt einzeln kopieren.
Betreff: Geclustertes Balkendiagramm nach VariableDie JMP-Methode besteht darin, einfach die Skripte aus jedem der Diagramme zusammen mit den Datenmanipulationen zu nehmen und sie in einem einzigen Skript zu platzieren.
Es klingt ein bisschen so, als würden Sie in etwa daran denken, die Skripte in der Datentabelle zu speichern.Das ist nicht das, was ich andeute.Ich übernehme das Speichern der Tabellenmanipulationsskripte und Plattformspeicherskripte in einem neuen Skriptfenster.
Betreff: Geclustertes Balkendiagramm nach VariableIch habe verstanden, was Sie sagen, und genau das habe ich getan - das Kombinieren des Tabellenstapelskripts und des Graph Builder-Skripts.
Ich habe nur nach den Fällen gefragt, in denen ich mehrere Operationen ausführen muss (z. B. mehrere Diagramme in der zweiten Tabelle erstellen) und nicht nur zwei - ob es eine Möglichkeit gibt, alle diese Operationen während meiner Ausführung in einem einzigen Skript "aufzuzeichnen". ihnen. Ich sage nicht, dass es notwendig ist, ich frage mich nur, ob eine solche Funktion in JMP vorhanden ist.
Betreff: Geclustertes Balkendiagramm nach VariableDie Antwort ist ja.
Die JSL, die ich gepostet habe, wurde hauptsächlich von JMP geschrieben.Jede Plattform, die Sie ausführen, und jede File==>Tables-Operation, die Sie ausführen, zeigt die JSL, die die interaktiv erstellten Datentabellen oder Anzeigen regeneriert.
Wenn Sie eine neue Datentabelle durch Stapeln erstellen, enthält der Eintrag „Quelle“ für die neue Tabelle die JSL, die die Datentabelle erstellt.
Wenn Sie für die Graph Builder-Plattform zum roten Dreieck gehen und "Skript speichern" auswählen, wird ein Skript bereitgestellt, das das Diagramm neu erstellt.
Betreff: Geclustertes Balkendiagramm nach VariableDanke schön!
Ich habe noch nie Skripte in JMP erstellt, aber ich konnte das Stack-Skript aus der ursprünglichen Tabelle und das Graph-Builder-Skript aus der gestapelten Tabelle mit einer kleinen Änderung zu einem zusammenführen und es zum Laufen bringen. Eine neue Tabelle muss noch generiert werden, aber zumindest habe ich nur eine Tabelle zu behalten.
Klingt so, als müsste ich anfangen, Skripte in JMP zu lernen, um mir das Leben zu erleichtern.
Gibt es aus Neugier eine Funktion in JMP, mit der ich meine Aktionen auf der Benutzeroberfläche in einem Skript "aufzeichnen" kann?
Betreff: Geclustertes Balkendiagramm nach VariableIch konnte Ihr Diagramm mit einem einfachen Stack und dann einem Graph Builder reproduzieren.

Names default to here(1);
dt = New Table( "Example",
Add Rows( 5 ),
New Column( "Sample",
Character,
"Nominal",
Set Values( {"A", "B", "C", "D", "E"} )
),
New Column( "Component 1",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.828470097854734, 0.8212191631319, 0.842324016243219,
0.882067339960486, 0.872661964339204]
)
),
New Column( "Component 2",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.116772082395202, 0.140967620703167, 0.125925316195233,
0.0770373142695993, 0.113037678561007]
)
),
New Column( "Component 3",
Numeric,
"Continuous",
Format( "Percent", 7, 2 ),
Set Selected,
Set Values(
[0.0547578197500645, 0.0378132161649326, 0.0317506675615479,
0.0408953457699151, 0.0143003570997886]
)
)
);
dtStack = dt << Stack(
columns( :Component 1, :Component 2, :Component 3 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
dtStack << Graph Builder(
Size( 534, 454 ),
Show Control Panel( 0 ),
Variables(
X( :Label ),
X( :Sample, Position( 1 ) ),
Y( :Data ),
Overlay( :Sample )
),
Elements( Bar( X( 1 ), X( 2 ), Y, Legend( 33 ) ) ),
SendToReport(
Dispatch(
{},
"Label",
ScaleBox,
{Label Row( 1, {Automatic Tick Marks( 0 ), Show Major Labels( 0 )} )}
),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
)
)
);