PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Legende bei zwei y-Achsen in pgfplots



letscho84
17-01-2012, 15:20
Hallo zusammen,

ich habe hier http://www.mrunix.de/forums/showthread.php?t=65953 einen Hinweis zur Darstellung einer Legende bei der Verwendung von zwei y-Achsen bekommen. Jedoch klappt das noch nicht ganz so wie ich möchte! Und zwar wird um die Legende ein Rahmen gezogen und ein weißer Rahmen um die Legendeneinträge, jedoch ist zwischen beiden ein ungefüllter Freiraum. Diesen würde ich nun gerne mit weiß auffüllen, so dass der schwarze Rahmen gleich an den weißen Rahmen der Legendeneinträge anschließt.
Wie kann ich das mit dem folgendenen Bsp. umsetzen?


\documentclass[a4paper, 11pt, oneside, ngerman]{book}

\usepackage{babel}
\usepackage[latin9]{inputenc} %Dateikodierung Windows
\usepackage[T1]{fontenc} %Aktiviert EC-Schriftarten

\usepackage[usenames,dvipsnames]{xcolor} %Zusätzliche Farben
\usepackage{colortbl} %Farben in Tabellen

\usepackage{graphicx} %Paket für Grafiken

\usepackage{amsmath, amsthm, amssymb, mathtools} %Pakete für Mathematik
\usepackage[version=3]{mhchem} %Chemische Formeln


\usepackage{tikz} %Für Zeichnungen von Graphen
\usetikzlibrary{fit}

\usepackage{pgfplots} %Für Graphen und Funktionen
\pgfplotsset{compat=newest} %Version einstellen
\pgfplotsset{x tick label style={/pgf/number format/use comma},
x tick label style={/pgf/number format/1000 sep=},
y tick label style={/pgf/number format/use comma},
y tick label style={/pgf/number format/1000 sep=},
scaled ticks=false,
xticklabel style={/pgf/number format/fixed,/pgf/number format/precision=4},
yticklabel style={/pgf/number format/fixed,/pgf/number format/precision=4}}
\pgfplotsset{axis background/.style={fill=cyan!6!yellow!27!}} %Hintergrundfarbe für alle Tabellen
\usepgfplotslibrary{units} %aktiviert die Einheiten unter pgfplots


\begin{document}


\begin{figure}[htb]
\centering
\begin{tikzpicture}
\begin{axis}[
scale only axis,
xlabel=Flugzeit, x unit=s,
ylabel=Masse, y unit=kg,
width=0.8\textwidth, height=0.3\textheight,
%ymin=10, ymax=47,
axis y line*=left,
legend style={name={leg1},at={(0.96,0.96)},anchor=north east,legend columns=-1,draw=none},
enlarge x limits=0.01, enlarge y limits=0.01]
\addplot[Blue, thick] {x^3 +8*x};
\addlegendentry{T01\_m}
\end{axis}
%
\begin{axis}[
axis background/.style={fill=none},
scale only axis,
ylabel=Druck, y unit=bar,
width=0.8\textwidth, height=0.3\textheight,
%ymin=5, ymax=25,
axis y line*=right,
axis x line=none,
legend style={name={leg2},at={(leg1.south west)},anchor=north west,legend columns=-1,draw=none},
enlarge x limits=0.01, enlarge y limits=0.01]
\addplot[Red, thick] {x^2 -4*x};
\addlegendentry{T01\_p}
\end{axis}
\node[draw, fit=(leg1)(leg2)]{};
\end{tikzpicture}
\end{figure}


\end{document}

Vielen Dank schon jetzt für eure Hilfe.

Grüße, Letscho

esdd
18-01-2012, 10:03
Hallo,

in dem Beispiel wurden beide Legenden getrennt erstellt und am Ende ein Rahmen passend um beide gelegt. Deshalb kann der Raum zwischen den Legenden und dem Rahmen nicht einfach weiß aufgefüllt werden.

Aber du kannst die Eintragung des ersten Graphen in die Legende auch erst in der zweiten axis Umgebung vornehmen - direkt vor dem \addplot des zweiten Graphen. Dann passen Hintergrund und Rahmen. Außerdem können die Legendeneinträge besser aneinander ausgerichtet werden.

Vorschlag:


\documentclass{book}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{tikz} %Für Zeichnungen von Graphen
\usepackage{pgfplots} %Für Graphen und Funktionen
\pgfplotsset{compat=newest} %Version einstellen
\pgfplotsset{x tick label style={%
/pgf/number format/use comma},
x tick label style={/pgf/number format/1000 sep=},
y tick label style={/pgf/number format/use comma},
y tick label style={/pgf/number format/1000 sep=},
scaled ticks=false,
xticklabel style={/pgf/number format/fixed,/pgf/number format/precision=4},
yticklabel style={/pgf/number format/fixed,/pgf/number format/precision=4},
axis background/.style={fill=cyan!6!yellow!27!} %Hintergrundfarbe für alle Tabellen
}
\usepgfplotslibrary{units} %aktiviert die Einheiten unter pgfplots

\begin{document}

\begin{tikzpicture}
\pgfplotsset{graph1/.style={Blue,thick},graph2/.style={red,thick}}
\begin{axis}[
scale only axis,
xlabel=Flugzeit,x unit=s,
ylabel=Masse,y unit=kg,
width=0.8\textwidth,height=0.3\textheight,
%ymin=10, ymax=47,
axis y line*=left,
enlarge x limits=0.01, enlarge y limits=0.01]
\addplot[graph1] {x^3 +8*x};
\end{axis}

\begin{axis}[
axis background/.style={fill=none},
scale only axis,
ylabel=Druck, y unit=bar,
width=0.8\textwidth, height=0.3\textheight,
%ymin=5, ymax=25,
axis y line*=right,
axis x line=none,
legend style={at={(0.96,0.96)},matrix anchor=north east,text depth=,legend cell align=left},
enlarge x limits=0.01, enlarge y limits=0.01]
% Eintragung des 1.Graphen in die 1.Zeile der Legende:
\addlegendimage{graph1}\addlegendentry{T01\_m}
\addplot[graph2] {x^2 -4*x};\addlegendentry{T01\_p}
\end{axis}
\end{tikzpicture}

\end{document}

Gruß
Elke

letscho84
18-01-2012, 13:12
Hallo,

in dem Beispiel wurden beide Legenden getrennt erstellt und am Ende ein Rahmen passend um beide gelegt...
Gruß
Elke

Hallo Elke,

vielen Dank für den Tipp und deinen Vorschlag. Das hat mir sehr viel geholfen und funktioniert auch so super. Danke noch mal.

Grüße, Letscho