Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Probleme mit Legende bei zwei y-Achsen in pgfplots

  1. #1
    Registrierter Benutzer
    Registriert seit
    04.08.2011
    Beiträge
    93

    Probleme mit Legende bei zwei y-Achsen in pgfplots

    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?

    Code:
    \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

  2. #2
    Registrierter Benutzer
    Registriert seit
    21.08.2009
    Beiträge
    496
    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:
    Code:
    \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

  3. #3
    Registrierter Benutzer
    Registriert seit
    04.08.2011
    Beiträge
    93
    Zitat Zitat von esdd Beitrag anzeigen
    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

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •