tikzpicture: Legende der horizontalen Linien

Tabellen und Grafiken erstellen und anordnen


sanpipe

tikzpicture: Legende der horizontalen Linien

Beitrag von sanpipe »

Hallo,

ich versuche mich gerade an einem Histogram mit Legende darunter. Da es nur drei Balken gibt, brauche ich die Legende nicht für die Balken, sondern für die Linien, die den Durchschnitt der Balken und einen anderen Durchschnittswert angeben.

Im Moment ziehe ich die Linie mit \draw und schreibe in die eckigen Klammern rein, was sie bedeuten. Das sieht aber ziemlich unschön aus, weil der Text mitten im Plot ist. Stattdessen sollte eine Legende darunter stehen und anzeigen, was die horizontalen Linien angeben.
\documentclass[12pt, totoc, titlepage]{scrartcl}

\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{graphicx,adjustbox} 


\usepackage{pgfplots} 
\pgfplotsset{width=\textwidth}

\begin{document}

\begin{figure}[!h]
\centering
\begin{adjustbox}{max width=0.9\textwidth}
\begin{tikzpicture}
\begin{axis}[
ybar,ymax=102,ymin=0,
height=10cm,
enlarge x limits=0.25,
axis x line*=left,
ylabel={\textit{a}-Markierung bei unbelebten DO in \%},
symbolic x coords={Spanien,Mexiko,Argentinien},
xtick=data,
legend style={
  at={(current bounding box.south-|current axis.south)},
  anchor=north,
  legend columns=-1
},
nodes near coords=\rotatebox{45}{\scriptsize\pgfmathprintnumber\pgfplotspointmeta},
]
\addplot[draw=black,fill=black!40!white,bar width=1cm] coordinates      {(Spanien,90)      (Mexiko,70)       (Argentinien,85.71)}; 


\draw [thick, red] ({rel axis cs:0,0}|-{axis cs:Spanien,81.9}) -- ({rel axis cs:1,0}|-{axis cs:Argentinien,81.9}) node [pos=0.5, above] {Durchschnittliche Frequenz bei 81,9\%};

\draw [thick, cyan] ({rel axis cs:0,0}|-{axis cs:Spanien,100}) -- ({rel axis cs:1,0}|-{axis cs:Argentinien,100}) node [pos=0.5, below] {Vergleichwert bei 100\%};

\end{axis}
\end{tikzpicture}
\end{adjustbox}
\caption{Häufigkeit der Markierungen}
\end{figure}

\end{document}

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Zunächst: Die Option totoc gibt es für die KOMA-Script Klassen nicht. Meinst Du listof=totoc, oder bibliography=totoc oder beides? Auch die Option [!h] für die figure Umgebung ist Unsinn. Wenn die Abbildung nicht gleiten soll, dann verwende keine Gleitumgebung.

Wenn Du eine Legende für die Linien haben möchtest, dann ist es das einfachste Du plottest die beiden. Definiere dazu zwei zusätzliche symbolische Koordinaten. Setze die Option ybar für den ersten Plot und ergänze dort mark=none und forget plot.
\documentclass[12pt]{scrartcl} 

\usepackage[ngerman]{babel} 
\usepackage[utf8]{inputenc} 
\usepackage{adjustbox} 

\usepackage{pgfplots} 
\pgfplotsset{
width=\textwidth,
compat=1.11
} 

\begin{document} 
\begin{center}
  \begin{minipage}{\linewidth}
    \centering 
    \begin{adjustbox}{max width=0.9\textwidth} 
      \begin{tikzpicture} 
        \begin{axis}[ 
            ymax=102,ymin=0, 
            height=10cm, 
            enlarge x limits=0.25, 
            axis x line*=left, 
            ylabel={\textit{a}-Markierung bei unbelebten DO in \%}, 
            symbolic x coords={links,Spanien,Mexiko,Argentinien,rechts},
            xtick=data, 
            legend style={ 
             at={(current bounding box.south-|current axis.south)}, 
             anchor=north, 
             legend columns=-1 
            }, 
            nodes near coords=\rotatebox{45}{\scriptsize\pgfmathprintnumber\pgfplotspointmeta}
          ] 
          \addplot[ybar,mark=none,draw=black,fill=black!40!white,bar width=1cm,forget plot] coordinates      {(Spanien,90)      (Mexiko,70)       (Argentinien,85.71)}; 
  %
          \addplot[thick, red,update limits=false] coordinates{(links,81.9) (rechts,81.9)};\addlegendentry{Durchschnittliche Frequenz bei 81,9\%}
          \addplot[thick, cyan,update limits=false] coordinates{(links,100) (rechts,100)};
          \addlegendentry{Vergleichwert bei 100\%}
        \end{axis} 
      \end{tikzpicture} 
    \end{adjustbox} 
    \captionof{figure}{Häufigkeit der Markierungen} 
  \end{minipage}
\end{center}
\end{document}
Gruß
Elke

Antworten