tutorials :: Säulen- und Balkendiagramme
Inhalt |
---|
Ein sehr einfaches tutorium zur Erstellung von Säulendiagrammen.
Worauf zu achten ist
Bei einem Balkendiagramm soll die Länge der Balken proportional zur absoluten bzw. relativen Häufigkeit sein; bei einem Säulendiagramm dementsprechend die Höhen der Säulen. Pseudo-3D-Diagramme sind - mögen sie auch noch so gut aussehen - nicht zu empfehlen, da sie die Darstellung zum Teil sehr verzerren und die Grafik überladen können. Eine Verzerrung tritt vor Allem dann auf, wenn z.B. statt Säulen zur Fragestellung passende Figuren verwendet werden, deren Größen den Häufigkeiten oft nicht mehr gerecht werden. Generell sollte man Wert auf das Wesentliche legen: eine einfache aber genaue Darstellung der interessierenden Häufigkeiten. Man sollte deshalb die Verwendung von grafischen Besonderheiten auf ein Minimum beschränken oder am besten ganz unterlassen.
Die Konstruktion
Wir beschränken uns hier auf die Darstellung eines Säulendiagramms. Die Konstruktion eines Säulendiagramms in LaTeX bietet sich nur dann an, wenn man relativ wenig Säulen darstellen will, da man die erforderlichen Höhen der Säulen per Hand eingeben muss und das wiederum recht viel Zeit beanspruchen kann.
Als Beispiel betrachten wir die Wachstumsraten des realen Bruttoinlandsproduktes (BIP) der zehn bevölkerungsreichsten Staaten der Europäischen Union (EU) im Jahr 2005.
Land | Wachstumsrate des BIP in % |
---|---|
Deutschland | 0.9 |
Frankreich | 1.2 |
Großbritannien | 1.9 |
Italien | 0.1 |
Spanien | 3.5 |
Polen | 3.5 |
Rumänien | 4.1 |
Niederlande | 1.5 |
Griechenland | 3.7 |
Portugal | 0.5 |
Bei größeren Prozenten oder Häufigkeiten müsste man evtl. die Daten geeignet skalieren, damit das Säulendiagramm überhaupt in das gewünschte Dokument passt. Die vorliegenden Wachstumsraten sind zum Glück recht klein, weshalb uns dieser Schritt erspart wird. Demzufolge brauchen wir uns um die Einteilung und Skalierung der Ordinate nicht zu kümmern.
Die Achsen
Bei der Gestaltung der Achsen sind der Kreativität keine Grenzen gesetzt. Ob das Diagramm von einer Box eingeschlossen ist oder einfach nur zwei Achsen vorhanden sind, Hauptsache es ist Platz für eine ausreichende Beschriftung. Ich habe mich für zwei einfache Achsen entschieden, deren Stil an Säulendiagramme von statistischen Programmpaketen wie R erinnert.
Bevor es aber weiter geht, müssen wir uns Gedanken um die Länge der Achsen machen.
Wie bereits erwähnt, ist das bei der Ordiante nicht das Problem.
Sie sollte nämlich nur etwas Größer als die höchste Säule sein.
Rumänien hat mit 4.1 % die größte Wachstumsrate, also auch die höchste Säule.
Mit einer Höhe der Ordinate von 4.5 cm sind wir also ganz gut bedient.
Nun zur Abzisse.
Wir betrachten zehn Länder, haben also auch zehn Säulen.
Als Breite der Säulen kann man sich auf 1 cm einigen, das ist nicht zu dick und nicht zu dünn.
Da wir kein Histogramm erstellen wollen, sind wir auch an einem Abstand zwischen den Säulen interessiert.
Diesen setzen wir auf 0.5 cm.
Die Abzisse bekommt daher eine Länge von 15.5 cm.
Alle Linien werden mit dem
\begin {tikzpicture}\draw (0cm,0cm) -- (15.5cm,0cm);%Abzisse \draw (0cm,0cm) -- (0cm,-0.1cm);\draw (15.5cm,0cm) -- (15.5cm,-0.1cm);\draw (-0.1cm,0cm) -- (-0.1cm,4.5cm);%Ordinate \draw (-0.1cm,0cm) -- (-0.2cm,0cm);\draw (-0.1cm,4.5cm) -- (-0.2cm,4.5cm) node [left] {\%};\end {tikzpicture}
Vom Punkt (0,0) aus wird die Abzisse 15.5 cm nach rechts gezeichnet. Eine durchgzogene Linie wird mit der zusätzlichn Angabe von "--" erzeugt. Die Angabe von "cm" kann hier auch weggelassen werden. Damit das ganze etwas moderner wirkt, wird an beiden Enden ein Strich mit einer Länge von 0.1 cm nach unten gesetzt. Die Beschriftung der Abzisse erfolgt zusammen mit den Säulen. Da die Achsen nicht so aneinander kleben sollen, beginnt die Ordinate im Punkt (-0.1,0) und wird dann 4.5 cm nach oben gezeichnet. Auch sie erhält tolle Striche an beiden Enden sowie die Beschriftung " % ". Die restliche Beschriftung der Ordinate erfolgt mit der Konstruktion des Hintergrunds.
Der Hintergrund
Bei einem Säulendiagramm empfiehlt es sich generell Hilfslinien einzuzeichnen. Unsere Hilfslinien sollen die ganzen Prozente repräsentieren, also 1, 2, 3 und 4. Damit sie die Grafik nicht dominieren, wählen wir als Farbe ein dezentes Grau, d.h. eine Mischung aus 50 % Grau und 50 % Weiß:
Die Achsenbeschriftung können wir mit dem\draw [gray!50] (-0.2cm,1cm) -- (15.5cm,1cm);
Die anderen Hilfslinien kann man jetzt entweder auf die gleiche Art und Weise hinzufügen, oder aber die\draw [gray!50, text=black] (-0.2cm,1cm) -- (15.5cm,1cm) node at (-0.5cm,1cm) {1};
\foreach \x in {1,...,4}\draw [gray!50, text=black] (-0.2 cm,\x cm) -- (15.5 cm,\x cm) node at (-0.5 cm,\x cm) {\x};
Eine Säule
Die Säulen werden als Rechtecke gezeichnet, deren Höhe der jeweiligen Wachstumsrate entspricht. Rumäniens Wachstumsrate beträgt 4.1 %, also ist die zughörige Säule 4.1 cm hoch. Gezeichnet wird wieder mit dem
Zwei entscheidende Sachen fehlen aber noch: die Beschriftung der Säule und eine ordentliche Farbe. Zuerst zur Beschriftung. Zum Einen müssen wir die genaue Wachstumsrate für Rumänien angeben (das gehört einfach zum guten Stil) und zum Anderen muss erkennbar sein, dass es sich um Rumäniens Wachstumsrate handelt. Bei den vorliegenden Daten bietet es sich an, die genaue Prozentangebe direkt über die Säule zu schreiben. Die Mitte der Säulenbreite treffen wir bei 1 cm und ein geeigneter Abstand zum oberen Ende erhalten wir mit 0.3 cm, also fügen wir an das Rechteck einfach ein\draw (0.5cm,0cm) rectangle (1.5cm,4.1cm);
Da die Namen der Staaten zum Teil recht lang sind, bietet es sich an, sie schräg an die unteren Enden der Säulen zu heften. Dazu machen wir vom\draw (0.5cm,0cm) rectangle (1.5cm,4.1cm) node at (1cm,4.4cm) {4.1};
\definecolor {myblue}{HTML}{92dcec}\draw [fill=myblue] (0.5cm,0cm) rectangle (1.5cm,4.1cm) node at (1cm,4.4cm) {4.1};\node [rotate=45, left] at (1cm, -0.1cm) {Rumänien};
Alle Säulen
Die restlichen neun Säulen können wir jetzt entweder per copy and paste entstehen lassen, oder wieder eine
Jede Säule hat drei individuelle Attribute die wir in der Schleife berücksichtigen müssen: den Anfangspunkt auf der Abzisse, die Höhe in Form der Wachstumsrate und die Beschriftung. Die Anfangspunkte lassen sich leicht berechnen. Jede Säule soll 1 cm breit sein und einen Abstand von 0.5 cm zur benachbarten Säule haben. Damit erhalten wir 0.5 cm, 2 cm, 3.5 cm , ... , 12.5 cm, 14 cm als Anfangspunkte auf der Abzisse. Die Höhen und die Beschriftungen der Säulen sind klar, sie befinden sich in obiger Tabelle. Damit erhalten wir folgende Schleife:
Das\foreach \x/\y/\country in {0.5/4.1/Rumänien, 2/3.7/Griechenland, 3.5/3.5/Spanien, 5/3.5/Polen, 6.5/1.9/Großbritannien, 8/1.5/Niederlande, 9.5/1.2/Frankreich, 11/0.9/Deutschland, 12.5/0.5/Portugal, 14/0.1/Italien} {\draw [fill=myblue] (\x cm,0cm) rectangle (1cm+\x cm,\y cm) node at (0.5cm + \x cm,\y cm + 0.3cm) {\y};\node [rotate=45, left] at (0.6 cm +\x cm,-0.1cm) {\country}; };
Zusammenfassung
Bevor nun der gesammte Quellcode gezeigt wird, sei noch einmal betont, dass es sich hierbei nicht um die Anleitung zur Konstruktion eines Säulendiagramms handelt, sondern lediglich die Fähigkeiten des
\definecolor {myblue}{HTML}{92dcec}\begin {tikzpicture}\draw (0cm,0cm) -- (15.5cm,0cm);%Abzisse \draw (0cm,0cm) -- (0cm,-0.1cm);%linkes Ende der Abzisse \draw (15.5cm,0cm) -- (15.5cm,-0.1cm);%rechtes Ende der Abzisse \draw (-0.1cm,0cm) -- (-0.1cm,4.5cm);%Ordinate \draw (-0.1cm,0cm) -- (-0.2cm,0cm);%unteres Ende der Ordinate \draw (-0.1cm,4.5cm) -- (-0.2cm,4.5cm) node [left] {\%};%oberes Ende der Ordinate \foreach \x in {1,...,4}%Hilfslinien \draw [gray!50, text=black] (-0.2 cm,\x cm) -- (15.5 cm,\x cm) node at (-0.5 cm,\x cm) {\x};%Beschriftung der Hilfslinien \node at (7.5cm,5cm) {Wachstumsrate des realen BIP für die zehn Bevölkerungsreichsten Staaten der EU 2005};%Überschrift \foreach \x/\y/\country in {0.5/4.1/Rumänien,%\x ist Anfang der Säulen 2/3.7/Griechenland,%\y ist Höhe der Säulen 3.5/3.5/Spanien, 5/3.5/Polen, 6.5/1.9/Großbritannien, 8/1.5/Niederlande, 9.5/1.2/Frankreich, 11/0.9/Deutschland, 12.5/0.5/Portugal, 14/0.1/Italien} {\draw [fill=myblue] (\x cm,0cm) rectangle (1cm+\x cm,\y cm)%die Säulen node at (0.5cm + \x cm,\y cm + 0.3cm) {\y};%die Prozente über den Säulen \node [rotate=45, left] at (0.6 cm +\x cm,-0.1cm) {\country};%Säulenbeschriftung };\end {tikzpicture}