PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : TikZ/pgfplots: Legende bei 2 Ordinaten



alexraasch
11-09-2009, 01:40
Ich möchte zwei Plots in einem Diagramm zeichnen, wobei zwei Ordinaten verwendet werden. Bei pgfplots wird dies ja erreicht, indem zwei axis-Umgebungen verwendet werden, von der eine nur die zusätzliche y-Achse enthält. Das Problem ist nun, dass bei der Legende der zweite Eintrag über den ersten gezeichnet wird:



\begin{tikzpicture}
\begin{axis}[height=5cm, width=12cm,
title={Montage Lautsprecher},
scale only axis,
xmin=0.8, xmax=12.2, ymin=0,
axis x line=bottom,
xtick={0.8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 12.2},
xticklabels={,Jan, Feb, Mrz, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez,},
axis y line=left, ylabel=Fehler je Modul,
legend style={at={(0.5,0.97)}, anchor=north, legend columns=-1}]
\addplot[red,mark=*] plot coordinates
{(01, 6.75) (02, 8.06) (03, 6.67) (04, 7.80) (05, 6.05) (06, 6.33)
(07, 5.89) (08, 6.55)};
\addlegendentry{Fehler je Modul}
\end{axis}

\begin{axis}[height=5cm, width=12cm,
scale only axis,
axis x line=none,
xmin=0.8, xmax=12.2, ymin=0,
xtick={0.8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 12.2},
axis y line=right, ylabel=Fehlteile,
legend style={at={(0.5,0.97)}, anchor=north, legend columns=-1}]]
\addplot plot coordinates
{(01, 89) (02, 71) (03, 79) (04, 52) (05, 4) (06, 29)
(07, 14) (08, 8)};
\addlegendentry{Fehlteile}
\end{axis}
\end{tikzpicture}

esdd
11-09-2009, 11:36
Über legend style gibst Du jeweils vor, wo die Legende hin soll. Für beide Plots steht in Deinem Code das gleiche da, also werden sie übereinander geschrieben.
Hier ein Vorschlag bei dem die Legenden linksbündig untereinanderstehen und ein gemeinsamer Rahmen um beide gezogen wird:


\documentclass{scrartcl}

\usepackage{pgfplots}
\usetikzlibrary{fit}

\begin{document}
\begin{tikzpicture}
\begin{axis}[height=5cm, width=12cm,
title={Montage Lautsprecher},
scale only axis,
xmin=0.8, xmax=12.2, ymin=0,
axis x line=bottom,
xtick={0.8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 12.2},
xticklabels={,Jan, Feb, Mrz, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez,},
axis y line=left, ylabel=Fehler je Modul,
legend style={name={leg1},at={(0.97,1)},anchor=north east,legend columns=-1,draw=none}]
\addplot[red,mark=*] plot coordinates
{(01, 6.75) (02, 8.06) (03, 6.67) (04, 7.80) (05, 6.05) (06, 6.33)
(07, 5.89) (08, 6.55)};
\addlegendentry{Fehler je Modul}
\end{axis}

\begin{axis}[height=5cm, width=12cm,
scale only axis,
axis x line=none,
xmin=0.8, xmax=12.2, ymin=0,
xtick={0.8, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 12.2},
axis y line=right, ylabel=Fehlteile,
legend style={name={leg2},at={(leg1.south west)},anchor=north west,legend columns=-1,draw=none}]]
\addplot plot coordinates
{(01, 89) (02, 71) (03, 79) (04, 52) (05, 4) (06, 29)
(07, 14) (08, 8)};
\addlegendentry{Fehlteile}
\end{axis}
\node[draw,fit=(leg1)(leg2)]{};
\end{tikzpicture}
\end{document}

alexraasch
11-09-2009, 13:28
Vielen Dank. Super Lösung!