Ich habe Daten mit allen numerischen Werten. Wie würde ich im Graph Builder eine Mischung aus gemischt gestapelten und nebeneinander liegenden Balkendiagrammen zeichnen? Ich möchte meine Diagramme wie in den beiden beigefügten Bildern dargestellt darstellen.
Das erste Bild zeigt nur den Prozentsatz jeder Variablen in einer Mischung aus gestapeltem und nebeneinander angeordnetem Balkendiagramm, im zweiten Bild wird jedoch auch der Wert der Variablen angezeigt.
Wenn Sie die detaillierte Vorgehensweise oder das JSL-Skript teilen könnten, wäre das eine große Hilfe.
Nachfolgend finden Sie die Beispieldaten.
| Student |
Total_Math_Physics |
Mathe |
Physik |
Total_Badminton_Football |
Badminton |
Fußball |
| A |
50 |
30 |
20 |
40 |
10 |
30 |
| B |
40 |
25 |
15 |
20 |
10 |
10 |
| C |
30 |
15 |
15 |
50 |
40 |
10 |
Danke 


Hallo @Rajat
Ich denke, wir können mit nur ein wenig Arbeit ziemlich nah an das herankommen, was Sie wollen:
Ich habe die neu strukturierte Datentabelle mit dem gespeicherten Skript angehängt, damit Sie selbst nachsehen können. Folgendes habe ich getan:
1. Stapeln Sie Ihren Originaltisch:
Current Data Table() << Stack(
columns( :Maths, :Physics, :Badminton, :Football ),
Source Label Column( "Label" ), Stacked Data Column( "Data" )
);

Dies ergibt Folgendes:
2. Wir benötigen eine Variable, mit der wir die Gruppierung der Aktivitäten aufteilen können (Mathe/Physik vs. Badminton/Fußball), also füge ich eine neue Spalte „Gruppe“ hinzu und iteriere AABBAABB usw. Sie können dies auf beliebige Weise tun Sie benötigen lediglich eine nominale Variable. Hier ist eine andere Möglichkeit mit Sequence():
New Column("Group", Numeric, "Nominal", Formula(Sequence(1, 2, 1, 2)) );

3. Diagrammersteller:
Ich habe eine Reihe von Einstellungen angepasst, damit das Diagramm so aussieht, wie ich es getan habe, aber hier sind die grundlegenden Schritte und ein kurzes Video:
Schritte:
- Ziehen Sie die Spalte „Daten“ in die Y-Rolle
- Ziehen Sie beide „Gesamt“-Spalten gleichzeitig an den oberen Rand der Y-Drop-Zone
- Schalten Sie die Punkte aus und aktivieren Sie das Balkenelement
- Ändern Sie den Balkenstil für das untere Diagramm „Daten“ in „Gestapelt“.
- Ziehen Sie „Label“ auf die Overlay-Rolle
- Deaktivieren Sie unter den Steuerelementen für die oberen Leisten die Overlay-Rolle unter „Variablen“.
- Ziehen Sie „Gruppe“ auf die Rolle der X-Achse
- Deaktivieren Sie die Variable „Gruppe“ für den oberen Plot im Bedienfeld
- Ziehen Sie „Student“ in die Rolle der Gruppe X
- Ändern Sie „Zusammenfassungsstatistik“ für das untere Diagramm in „% des Faktors“ (ich habe es versäumt, dies im Video anzuzeigen).
- Ändern Sie die Beschriftung für jeden Balken in „Beschriftung nach Wert“.
Das gibt:
Von hier aus kann man viel unternehmen. Für das endgültige Diagramm, das ich zu Beginn gezeigt habe, habe ich auch einige Ergänzungen vorgenommen, wie z. B. das Ändern der Balkenbreiten (Rechtsklick auf ein Diagramm > Anpassen), das Entfernen der Beschriftungen der Rotes Dreieck > Diagrammabstand). Hier ist ein Skript für das endgültige Diagramm:
Graph Builder(
Size( 799, 566 ),
Show Control Panel( 0 ),
Graph Spacing( 2 ),
Variables(
X( :Group ),
Y( :Total_Math_Physics ),
Y( :Total_Badminton_Football, Position( 1 ) ),
Y( :Data ),
Group X( :Student ),
Overlay( :Label )
),
Elements(
Position( 1, 1 ),
Bar( Y( 1 ), Y( 2 ), Overlay( 0 ), Legend( 5 ), Label( "Label by Value" ) )
),
Elements(
Position( 1, 2 ),
Bar(
X,
Y,
Legend( 4 ),
Bar Style( "Stacked" ),
Summary Statistic( "% of Factor" ),
Label( "Label by Value" )
)
),
SendToReport(
Dispatch(
{},
"Group",
ScaleBox,
{Min( -1.167069008972 ), Max( 2.147362067225 ), Inc( 1 ),
Minor Ticks( 0 ), Label Row( Show Major Labels( 0 ) )}
),
Dispatch(
{},
"Total_Math_Physics",
ScaleBox,
{Min( 0.23109243697479 ), Max( 55 ), Inc( 10 ), Minor Ticks( 1 )}
),
Dispatch(
{},
"Data",
ScaleBox,
{Min( 0 ), Max( 1.1209749344709 ), Inc( 0.2 ), Minor Ticks( 0 )}
),
Dispatch( {}, "graph title", TextEditBox, {Set Text( "Example" )} ),
Dispatch( {}, "X title", TextEditBox, {Set Text( "" )} ),
Dispatch(
{},
"Graph Builder",
FrameBox,
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 2 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 3 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 4 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 5 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 0.6 ) )}
),
Dispatch(
{},
"Graph Builder",
FrameBox( 6 ),
{DispatchSeg( BarSeg( 1 ), Set Width Proportion( 1 ) )}
)
)
);
Ich hoffe das hilft!
@julianisch
Hallo @Rajat
Ihre Frage ist gut, aber ich glaube nicht, dass JMP dies im Handumdrehen tun kann.
Bitte sehen Sie sich im Anhang meine Datei mit den Skripten an, um die Ausgabe zu erzeugen. Mein Ansatz ist eher eine Low-Tech-Lösung. Ich habe Spalten hinzugefügt, um die Anteile für jedes Thema zu berechnen, und (falsche) Zeilen, um den Nebeneinandereffekt zu berücksichtigen. Sobald dies erledigt ist, habe ich einige Dinge in den Diagrammeigenschaften geändert, um die Illusion zu vervollständigen.
Bitte teilen Sie uns mit, ob dies in die richtige Richtung geht.
Ron
