Hallo alle,
Ich habe eine scheinbar einfache Frage, auf die ich keine Antwort finden kann. Ich habe ein Balkendiagramm erstellt und möchte die Füllfarbe jedes Balkendiagramms individuell anpassen. Das Diagramm zeigt die Kosten auf der Y-Achse und die Automarke auf der X-Achse, wobei jede Automarke zwei Jahre hat. Der Grund dafür ist, dass ich je nach Jahr (2017 und 2018) eine allgemeine Füllfarbe habe, aber bestimmte Automarken in einer anderen Farbe hervorheben möchte (z. B. würde sich Honda 2017 von den übrigen Automarken des Jahres 2017 unterscheiden, und Honda 2018 wäre es anders). anders als die übrigen Automarken des Jahres 2018).
Gibt es eine Möglichkeit, dies entweder mit Graph Builde oder mit vollständigem Code einfach zu tun?
Vielen Dank im Voraus.
Das folgende Skript erweitert Jims, @txnelson , ausgezeichneter Vorschlag, der zeigt, wie man mit JSL bestimmte Farben festlegt, um die zu ändern Legendenmodell.
Names Default to Here(1);
dt = open("$sample_data/big class.jmp");
gb = dt << Graph Builder(
show control panel(0),
Variables(
X( :age ),
X( :sex, Position( 1 ) ),
Y( :height ),
Color(
Transform Column(
"Transform[age]",
Character,
Nominal,
Formula( (Char( :age ) || " ") || :sex )
)
)
),
Elements( Bar( X( 1 ), X( 2 ), Y, Legend( 12 ) ) )
);
//note Item ID count begins with 0
gb << SendToReport(
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
//12,
Properties( 0, {Fill Color( 5 )}, Item ID( "12 F", 1 ) ),
Properties( 1, {Fill Color( 5 )}, Item ID( "12 M", 1 ) ),
Properties( 2, {Fill Color( 20 )}, Item ID( "13 F", 1 ) ),
Properties( 3, {Fill Color( 20 )}, Item ID( "13 M", 1 ) ),
Properties( 4, {Fill Color( 6 )}, Item ID( "14 F", 1 ) ),
Properties( 5, {Fill Color( 6 )}, Item ID( "14 M", 1 ) ),
Properties( 6, {Fill Color( 27 )}, Item ID( "15 F", 1 ) ),
Properties( 7, {Fill Color( 27 )}, Item ID( "15 M", 1 ) ),
Properties( 8, {Fill Color( 26 )}, Item ID( "16 F", 1 ) ),
Properties( 9, {Fill Color( 26 )}, Item ID( "16 M", 1 ) ),
Properties( 10, {Fill Color( 12 )}, Item ID( "17 F", 1 ) ),
Properties( 11, {Fill Color( 12 )}, Item ID( "17 M", 1 ) )
)}
)
);

Eine Lösung besteht darin, eine neue Spalte zu erstellen, die die Verkettung Ihrer Spalten „Jahr“ und „Auto“ darstellt
kombinieren = char(:Jahr) || " " || :Auto;
Verwenden Sie dann diese neue Spalte als Farbspalte in Ihrem Graph Builder. Anschließend können Sie jeden einzelnen Balken in der gewünschten Farbe gestalten.Unten sehen Sie ein ähnliches Beispiel unter Verwendung der Beispieldatentabelle „Big Class“.

Manchmal habe ich das gleiche Problem.
Mit 6 Elementen in Spalte A und 2 Elementen in Spalte B macht es immer noch Spaß, die 6x2 unterschiedlichen Teilmengen manuell einzufärben.
Aber es gibt auch andere Fälle, in denen es eine Weile dauert, die richtigen Farben manuell zuzuweisen.
Anwendungsfall:
- Verwenden Sie Spalte A als Farbe
- Verwenden Sie Spalte B =exclud(), um ausgeschlossenen Punkten eine graue Farbe zu geben
Für solche Anwendungen, GraphBuilder: Dropzone überschreiben könnte eine leistungsstarke Funktion sein.