Hallo,
Ich versuche, Kurven auf eine bestimmte Art und Weise einzufärben, finde aber keine Möglichkeit ...
Im Grunde habe ich ein paar Kurven, die durch eine Beschriftung gruppiert sind. Wie kann ich alle Kurven für jede Gruppe mit einer anderen Farbe anzeigen?
Bisher habe ich versucht, im Graph Builder die „Beschriftung“ in den „Overlay“-Teil einzufügen … Aber auf diese Weise betrachtet JMP alle Kurven einer Gruppe als EINE Kurve.
Ich habe eine etwas fortgeschrittenere Sache mit JSL ausprobiert (den Code finden Sie unten). Ich konnte die Kurven generieren und auf die verschiedenen Linien zugreifen und sie unabhängig voneinander einfärben, aber ich verliere die Verbindung zwischen den Linien und der Beschriftung.
Im Beispiel unten: Wie kann ich alle Kurven von Honda in Rot, die von Ford in Blau und die von GM in Lila erhalten? (Dies setzt natürlich voraus, dass ich a priori nicht weiß, wie viele Kurven es in jeder Gruppe gibt und nicht, wie viele Gruppen es gibt).
Irgendwelche Ideen ?
// Generate a simple table as example
dt = New Table( "Untitled 9050",
Add Rows( 33 ),
New Column( "Time [years]",
Numeric,
Continuous,
Format( "Best", 2 ),
Set Values(
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
)
),
New Column( "car1",
Numeric,
Continuous,
Format( "Best", 12 ),
Set Values(
[0, 0.8, 1.6, 2.4, 3.2, 4, 4.8, 5.6, 6.4, 7.2, 8, 0, 1.2, 2.4, 3.6, 4.8,
6, 7.2, 8.4, 9.6, 10.8, 12, 0, 2.2, 4.4, 6.6, 8.8, 11, 13.2, 15.4, 17.6,
19.8, 22]
)
),
New Column( "car2",
Numeric,
Continuous,
Format( "Best", 12 ),
Set Selected,
Set Values(
[0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 0, 1.4, 2.8, 4.2, 5.6, 7,
8.4, 9.8, 11.2, 12.6, 14, 0, 2.4, 4.8, 7.2, 9.6, 12, 14.4, 16.8, 19.2,
21.6, 24]
)
),
New Column( "car3",
Numeric,
Continuous,
Format( "Best", 12 ),
Set Values(
[0, 0.6, 1.2, 1.8, 2.4, 3, 3.6, 4.2, 4.8, 5.4, 6, 0, 1.6, 3.2, 4.8, 6.4,
8, 9.6, 11.2, 12.8, 14.4, 16, 0, 2.6, 5.2, 7.8, 10.4, 13, 15.6, 18.2,
20.8, 23.4, 26]
)
),
New Column( "car4",
Numeric,
Continuous,
Format( "Best", 12 ),
Set Values(
[0, 0.4, 0.8, 1.2, 1.6, 2, 2.4, 2.8, 3.2, 3.6, 4, 0, 1.8, 3.6, 5.4, 7.2,
9, 10.8, 12.6, 14.4, 16.2, 18, 0, 2.8, 5.6, 8.4, 11.2, 14, 16.8, 19.6,
22.4, 25.2, 28]
)
),
New Column( "Manufacturer",
Character( 16 ),
Nominal,
Set Values(
{"Honda", "Honda", "Honda", "Honda", "Honda", "Honda", "Honda", "Honda",
"Honda", "Honda", "Honda", "Ford", "Ford", "Ford", "Ford", "Ford",
"Ford", "Ford", "Ford", "Ford", "Ford", "Ford", "GM", "GM", "GM", "GM",
"GM", "GM", "GM", "GM", "GM", "GM", "GM"}
)
)
);
// stack the table
dt_Stack = dt << Stack(
columns( :car1, :car2, :car3, :car4 ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
// Create a graph
MyGraph = Graph Builder(
Variables( X( :Name( "Time [years]" ) ), Y( :Data ), Overlay( :Label ) ),
Elements(
Points( X, Y, Legend( 1 ), Jitter( 1 ) ),
Smoother( X, Y, Legend( 2 ) )
)
);
// Access the lines and their properties
GraphsRep = Report( MyGraph );
nbp = GraphsRep[FrameBox( 1 )] << segCount( "LineSeg" );
// Modify the lines colors
For( n = 1, n <= nbp, n++,
s = GraphsRep[FrameBox( 1 )] << FindSeg( LineSeg( n ) );
s << Line Color( "Black" );
);Vier Punkte:
Skripterstellung
@XanGregg Wahrscheinlich ist es richtig, dass Sie in Wirklichkeit eine Gruppe von Diagrammen wollen, die mit JSL erstellt oder geändert wurden, und nicht ein einziges großes Diagramm. Im Folgenden finden Sie jedoch zwei Dinge, die Sie ausprobieren sollten.
Linien zeichnen
Es fällt mir schwer, mir das Diagramm vorzustellen, das Sie erstellen möchten. Es klingt nach vielen Linien in einem Diagramm und einer seitenlangen Legende. Mithilfe der Pivot-Daten erstellt das obere Diagramm im Skript unten Linien für jedes Auto, die nach Hersteller gefärbt sind.Da Sie nur mit 5 Linienstilen arbeiten können, können Sie den Fahrzeugtyp in der Legende nur anhand der Farbe identifizieren.Vielleicht könnten Sie dieses Diagramm verwenden, um den Hersteller des Autos zu identifizieren, und dann ein zweites Diagramm, das nach Hersteller gruppiert oder verpackt und dann nach Auto eingefärbt wird? Das ist das untere Diagramm in diesem Skript. Beachten Sie, dass Sie auf eine Linie klicken können, um sie im unteren Diagramm anzuzeigen.
//Start with the long table in your first post.<BR />New Window("Two Graphs",
Graph Builder(
Size( 600, 400 ),
Show Control Panel( 0 ),
Variables(
X( :Name( "Time [years]" ) ),
Y( :Data ),
Overlay( :Name( "Man-Car" ) ),
Color( :Manufacturer )
),
Elements( Line( X, Y, Legend( 20 ) ) ),
SendToReport(
Dispatch(
{},
"Time [years]",
ScaleBox,
{Label Row( Show Major Grid( 1 ) )}
),
Dispatch( {}, "Data", ScaleBox, {Label Row( Show Major Grid( 1 ) )} )
)
),
Graph Builder(
Size( 604, 448 ),
Show Control Panel( 0 ),
Variables(
X( :Name( "Time [years]" ) ),
Y( :Data ),
Wrap( :Manufacturer ),
Overlay( :Label )
),
Elements( Line( X, Y, Legend( 20 ) ) ),
SendToReport(
Dispatch(
{},
"Time [years]",
ScaleBox,
{Label Row( Show Major Grid( 1 ) )}
),
Dispatch( {}, "Data", ScaleBox, {Label Row( Show Major Grid( 1 ) )} )
)
)
)
Legende
Damit in der Legende der Hersteller und das Auto zusammen angezeigt werden, erstellen Sie eine Spalte, in der der Herstellername mit dem Autonamen verknüpft ist.Zum Beispiel:
New Column( "Man:Car",
Character,
"Nominal",
Formula( :Manufacturer || " " || :Label ),
Set Selected,
Set Display Width( 108 )
)
Zeichnen Sie stattdessen Punkte auf
Eine andere Idee: Anstatt zu versuchen, so viele Linien anzuzeigen, könnten Sie stattdessen jede Kurve zu dem zusammenfassen, was Sie eigentlich visualisieren möchten?Für das [ich gehe davon aus] vereinfachte Linienbeispiel könnten Sie für jedes Auto einzelne Punkte zeichnen, die die Steigung und den Schnittpunkt zeigen.Zweitausend Punkte auf einem Diagramm sind einfacher zu interpretieren als 2000 Linien. Irgendwann gebe ich die Legende jedoch immer noch auf.Hier habe ich mit der langen Tabelle begonnen und ein Anpassungsmodell „nach“ der oben erstellten Man-Car-Spalte erstellt, dann die Schätzungstabelle als kombinierte Tabelle gespeichert, die Tabelle nach Begriffen aufgeteilt und dann grafisch dargestellt:
