Custom Colors

Paletten

Damit nicht jede Grafik gleich aussieht und einige Farben vielleicht besser zum Corporate Design passen, stellt das Business Intelligence Development Studio (BIDS) verschiedene Paletten zur Verfügung, die man für die Darstellung in den unterschiedlichsten Grafiken verwenden kann.

Wenn wir ein Tortendiagramm haben und dies markieren, finden wir bei den Eigenschaften im Bereich "Diagramm" den Wert für "Palette". (Siehe Punkt 1 unten)

Hier gibt es eine Reihe von Paletten für jeden Geschmack, die als erster Ansatz auch gerne genommen werden. Warum dies nicht immer die erste Wahl ist und welche Alternativen es gibt, soll hier gezeigt werden.

CustomPalette

Wem die vordefinierten Paletten nicht zusagen, kann über die Auswahl "Custom" für die Palette (Siehe Punkt 1 oben) bestimmen, dass weiterhin die Werte verwendet werden sollen, die man ebenfalls im Bereich "Diagramm" unter "CustomPaletteColors" (Siehe Punkt 2 oben) festlegen kann. Dies ist eine Auflistung, für die es auch einen Editor gibt. Dieser öffnet sich nach einem Klick auf den Button mit den drei Punkten.

Hier nun können die einzelnen Farben definiert werden. Alle "Member" der Palette werden später der Reihenfolge nach für die Grafik verwendet. Sicherheitshalber sollte man hier etwas mehr Farben definieren, als aktuell benötigt werden, damit man nicht bei der kleinsten Erweiterung eine böse Überraschung erlebt und eine unerwünschte Farbe auftaucht. Falls Farben fehlen, fängt die Grafik nämlich einfach wieder bei der erste Farbe der CustomPalette an und so weiter.

Leider gibt es keine Möglichkeiten diese CustomPalette vernünftig über einen Ausdruck aus den Daten oder anders zu füllen und auch die Kopierbarkeit ist nicht gegeben. Falls man bestimmten Werten immer die gleiche Farbe zuordnen will, wird man hier auch nicht glücklich, da die Farben einfach in der Reihenfolge verwendet werden, wie sie in der Palette definiert sind. Fehlt mal eine Kategorie im Ergebnis des SQLs, verschieben sich alle Farben für die folgenden Kategorien um eine Stelle.

Reiheneigenschaften (Ausfüllen) - Series (Fill)

Wenden wir uns jetzt also der Möglichkeit zu, diese Farben über einen Ausdruck bestimmen zu können. Sobald wir diese Möglichkeit einsetzen, sind die Definitionen der "Palette" und "CustomPaletteColors" hinfällig, da sie nachrangig behandelt werden.

Je nach Anwendungsfall sollte man überlegen, ob man in der Datenbank bereits die Standard-Farben für einzelne Grafiken hinterlegen möchte. Diese können dann z. B. über einen Join mit den eigentlichen Datasets verknüpft werden, so dass die Daten bereits um ihre Farben angereichert werden.

Das folgende SQL kennen wir so ähnlich bereits aus dem letzten Beitrag zu den PieCharts:

Select 'LKW' as Kategorie, '#FF7F00' as Farbe, 1 as Wert
Union ALL
Select 'PKW' as Kategorie, '#B8860B' as Farbe, 13 as Wert
Union ALL
Select 'Motorrad' as Kategorie, '#C04000' as Farbe, 6 as Wert
Union ALL
Select 'Motorroller' as Kategorie, '#6A8E22' as Farbe, 10 as Wert
Union ALL
Select 'Fahrrad' as Kategorie, '#CE8540' as Farbe, 15 as Wert
Union ALL
Select 'Dreirad' as Kategorie, '#C0C000' as Farbe, 18 as Wert
Union ALL
Select 'Rutscheauto' as Kategorie, '#228B22' as Farbe, 19 as Wert
Union ALL
Select 'Skateboard' as Kategorie, '#D3691F' as Farbe, 20 as Wert
Union ALL
Select 'Inliner' as Kategorie, '#7F8000' as Farbe, 21 as Wert
Union ALL
Select 'Roller-Skates' as Kategorie, '#20B1AA' as Farbe, 22 as Wert
Union ALL
Select 'Klapproller' as Kategorie, '#F4A361' as Farbe, 10 as Wert
Union ALL
Select 'Mofa' as Kategorie, '#01C000' as Farbe, 12 as Wert
Union ALL
Select 'Moped' as Kategorie, '#8EBC8B' as Farbe, 14 as Wert
Union ALL
Select 'Quad' as Kategorie, '#B22222' as Farbe, 16 as Wert
Union ALL
Select 'Kleinlaster' as Kategorie, '#8B4512' as Farbe, 18 as Wert
Union ALL
Select 'Flugzeug' as Kategorie, '#C00000' as Farbe, 3 as Wert
order by Wert, Kategorie;

Hier werden einzelne Kategorien benannt, die Ausgabe soll aber aufsteigend nach dem Wert stattfinden. Wer das Order by nicht im Select machen möchte, kann in den Eigenschaften der Kategorie die Sortierung setzen:

... oder aber das Kontextmenü der Kategorie aufrufen um letztlich zu den selben Einstellungen zu gelangen:

Man markiert jetzt z. B. die Diagrammreihe (Series) eines Tortendiagramms. Im Bereich "Darstellung" wird jetzt der Wert für "Color" gesetzt. Da wir in den Daten bereits die Farbe haben, wählen wir ein Feld aus dem Dataset: "=Fields!Farbe.Value"

Alternativ kann man auch den Wert über die GUI setzen. Hierzu wählt man im Kontextmenü "Reiheneigenschaften" den Bereich "Ausfüllen" aus. Dort hinterlegt man für die Farbe den Ausdruck (Button fx).

Frei definierbare Farbzuordnung

Wer die Farben nicht in seiner Datenbank hinterlegen will und auch die Datasets unabhängig von den Farben entwickeln möchte, hat die Möglichkeit einen komplexeren Ausdruck zu hinterlegen. In unserem Fall wollen wir nur für die nicht motorisierten Kategorien eine Farbe hinterlegen, die anderen sollen grau erscheinen.

Wir verwenden also an dieser Stelle einen kleinen Code-Block, der mittels Switch die Unterscheidung nach den Kategorien macht. Alles was nicht definiert ist, fällt in den letzten Fall ohne Berücksichtigung der Kategorie. Die Idee hierzu habe ich mir bei Valentino Vranken geholt:

=Switch
(
        Fields!Kategorie.Value = "Fahrrad", "#CE8540",
        Fields!Kategorie.Value = "Dreirad", "#C0C000",
        Fields!Kategorie.Value = "Rutscheauto", "#228B22",
        Fields!Kategorie.Value = "Skateboard", "#D3691F",
        Fields!Kategorie.Value = "Inliner", "#7F8000",
        Fields!Kategorie.Value = "Roller-Skates", "#20B1AA",
        Fields!Kategorie.Value = "Klapproller", "#F4A361",
    True , "#888888"
)

Farbcodes

Wenn man im Netz sucht, scheint es zwei vordefinierte Paletten zu geben, die sich besonderer Beliebtheit erfreuen. Zum einen ist es BrightPastel und zum anderen EarthTones. Leider setzen sich diese Paletten nicht aus Farben zusammen, für die im BIDS ein Name hinterlegt ist wie "Gold" oder "Tomato", sondern verwenden individuelle Farben, die sich über den Hexadezimalen-Wert für die Farbanteile mischen lassen. Eine Beschreibung hierzu, welche Farbwerte in den Paletten vorkommen, konnte ich nicht finden, aber mit einem kleinen Tool, konnte ich mir die Farbwerte in einer Grafik ausgeben lassen.

Hier sind nun die von mir verwendeten Definitionen der Farbwerte:

BrightPastel - 15 Farben EarthTones - 16 Farben
#418CF1
#FBB440
#E0410A
#056492
#BFBFBF
#1A3A69
#FFE382
#129CDD
#CA6B4B
#005CDB

#F3D187
#506381
#F1B9A8
#E0830A
#7893BE
#FF7F00
#B8860B
#C04000
#6A8E22
#CE8540
#C0C000
#228B22
#D3691F
#7F8000
#20B1AA

#F4A361
#01C000
#8EBC8B
#B22222
#8B4512
#C00000

Weitere Links

Dieser Artikel befasst sich sehr ausführlich mit den Möglichkeiten der Reporting-Services, ist allerdings für SQL Server 2005 geschrieben worden. Trotzdem zeigt er verschiedenste Techniken, die mir in der normalen Online-Doku absolut zu kurz kommen.

Einen Kommentar hinterlassen

You must be logged in to leave a comment. Log in now!

If you have no account yet, you can register now...
(It only takes a few seconds!)

  • Christoph Muthmann
    Trackback von: Christoph Muthmann
    07.02.12 @ 11:05:36

    Gemeinsame Legende erzeugen
    Hat man mehrere Grafiken auf einer Seite und alle beziehen sich auf die gleichen Daten, dann ist es unter Umständen eine gute Idee, eine gemeinsame Legende für alle Charts einzuführen.