Schicke Grafiken in LaTeX mit pgfplots (2)

Ich hatte im Beitrag »Schicke Grafiken in LaTeX mit pgfplots (1)« noch ein zweites Beispiel angekündigt. Diesmal zeige ich wie man mit pgfplots eine Grafik mit horizontalen Balken baut. Als Grundlage dient die Grafik aus einem Paper mit dem Titel »Concrete-based constrained layer damping«. Das Original sieht bereits im Original verpixelt aus:

Mit PGF bzw. besser gesagt mit TikZ lässt sich das nachbauen. Box, Anstriche, Beschriftungen und Balken müssen aber alle komplett von Hand erstellt werden.

begin{tikzpicture}[xcomb,thick]
    % die balken
    draw[color=gray,line width=10pt]
        plot coordinates{(0.75,0.5) (1.125,1) (7.5,1.5) (5.4,2)
        (6,2.5) (0.3,3) (0.05,3.5)};
    % box (rechteck) außen rum
    draw (0,0) rectangle (9,4);
    % die achsenbeschriftung links
    foreach y/ytext in {0.5/mild steel, 1/cast iron, 1.5/granite,
        2/polymer concrete, 2.5/lead, 3/6063 aluminium, 3.5/alumina}
        draw (-2pt,y cm) node[anchor=east] {footnotesizeytext};
    % anstriche für die achse unten
    draw (0,0) -- (-2pt,0);
    foreach x in {0,0.75,...,9}
        draw (x cm,0) -- (x cm,-2pt);
    % achsenbeschriftung unten
    foreach x/xtext in {0/0.000, 1.5/0.001, 3/0.002, 4.5/0.003,
        6/0.004, 7.5/0.005, 9/0.006}
        draw (x cm,-2pt) node[below] {footnotesizextext};
end{tikzpicture}

Das Ergebnis ist schon recht ansprechend, es werden die LaTeX-Schriften verwendet und es ist eine saubere Vektorgrafik:

Mit pgfplots muss man nicht alle Einzelheiten selbst nachbauen sondern definiert im Grunde nur noch Labels und Werte.

begin{tikzpicture}
    begin{axis}[
        xbar,
        width=10cm,
        height=6cm,
        ytick={1,...,7},
        yticklabels={%
            mild steel,
            cast iron,
            granite,
            polymer concrete,
            lead,
            6063 aluminium,
            alumina},
        xmin=0,
        xmax=0.006
    ]
    addplot[draw=darkblue,fill=blue!50!white,semithick] coordinates {
        (4.5e-4,    1)
        (7.5e-4,    2)
        (5e-3,      3)
        (3.6e-3,    4)
        (4e-3,      5)
        (2e-4,      6)
        (3e-5,      7)
    };
    end{axis}
end{tikzpicture}

Da ist erstens der Quelltext übersichtlich und verständlich und das Ergebnis überzeugt ebenso:

Mehr Text gibt’s dann ein ander Mal wieder, ich denke die Code-Beispiele und Bildchen sprechen für sich. ;-)

Leave a Reply

Your email address will not be published. Required fields are marked *