Seite 1 von 1

Eine Legende für Diagramm mit zwei y-Achsen

Verfasst: Mo 15. Mai 2017, 15:12
von Darcy
Hallo zusammen,

ich bastel gerade an schönen Diagrammen für meine Masterarbeit und inzwischen sieht auch fast alles aus wie gewünscht.
Aber in einem Diagramm habe ich zwei y-Achsenbeschriftungen und entsprechend werden zwei Legenden generiert, die auf einander liegen, wenn man sie nicht manuell verschiebt.
Ich möchte aber eigentlich nur EINE Legende mit den Inhalten bezüglich beider Achsen. Also im untenstehenden Beispiel hätte ich gerne eine Box in der alle drei Beschriftungen über einander stehen wie es bei "test2" und "test3" automatisch der Fall ist.

Vielen Dank für die Hilfe!
Darcy
\documentclass{scrartcl}
 
\usepackage{pgfplots}

\pgfplotsset{compat=newest, legend cell align=left,
every axis legend/.append style={
at={(0.5,-0.25)},
anchor=south}}
 
\begin{document}
\centering
	\begin{tikzpicture}
	
	  \begin{axis}[scale only axis,
			axis y line=left]
 			\addplot[color=red,mark=x] coordinates {
			(2,-2)
			(3,-3)
			(4,-4)};
			\legend{\large{Langer test1}}
			\end{axis}
			
		  \begin{axis}
		  [scale only axis,
			axis y line=right,
			axis x line=none]
			\addplot[color=blue,mark=*] coordinates {
			(2,10)
			(3,20)
			(4,30)};
			\addplot[color=green,mark=*] coordinates {
			(2,20)
			(3,30)
			(4,40)};
			\legend{test2,test3}
		  \end{axis}
		\end{tikzpicture}
\end{document}


Verfasst: Mo 15. Mai 2017, 16:06
von esdd
Du kannst mit \label und \ref arbeiten, um die Legende manuell am gewünschten Platz zu erstellen:
\documentclass{scrartcl} 
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\usetikzlibrary{matrix}

\begin{document} 
\centering 
\begin{tikzpicture} 
  \begin{axis}[scale only axis, 
      axis y line=left] 
       \addplot[color=red,mark=x] coordinates { 
      (2,-2) 
      (3,-3) 
      (4,-4)};
      \label{plots:langer test1}
  \end{axis} 
  \begin{axis} 
     [scale only axis, 
      axis y line=right, 
      axis x line=none]
      \addplot[color=blue,mark=*] coordinates { 
      (2,10) 
      (3,20) 
      (4,30)};
      \label{plots:test2}
      \addplot[color=green,mark=*] coordinates { 
      (2,20) 
      (3,30) 
      (4,40)};
      \label{plots:test3}
  \end{axis}
  \matrix[
    matrix of nodes,
    draw,
    anchor=north,
    column 1/.style={nodes={anchor=center}},
    column 2/.style={nodes={anchor=west}}
  ] at([yshift=-2.5em]current axis.south)
  {
    \ref{plots:langer test1}&Langer Test\\
    \ref{plots:test2}&Test 2\\
    \ref{plots:test3}&Test 3\\
  };
\end{tikzpicture} 
\end{document}

Verfasst: Di 16. Mai 2017, 10:25
von Darcy
Super, danke! :) Hat wunderbar funktioniert!