2
1

Um in einem Diagramm zwei verschiedene y-Achsen verwenden zu können, habe ich zwei axis Umgebungen übereinander gezeichnet. Bisher sieht das bei mir so aus:

alt text

In der Legende fällt auf, dass der Abstand zwischen den Zeilen unterschiedlich und die Texteinträge nicht aneinander ausgerichtet sind. Wie kann ich das ändern?

Mein bisheriger Code:

Open in writeLaTeX
\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}[node font=\footnotesize,
  farbe/.style={draw=#1!80!black,fill=#1!20}] 
\pgfplotsset{
    height=4cm, width=7cm,
    scale only axis, 
    xmin=0.5, xmax=4.5,
    legend style={draw=none,legend cell align=left,}
}
% Barplots
\begin{axis}[
    axis x line=bottom, 
    xtick={0.5, 1, 2, 3, 4, 4.5},
    xticklabels={,2009, 2010, 2011, 2012, }, 
    axis y line=left, ylabel=Label 1,
    ymin=4, ymax=14,
    ytick={4,6,...,14}, 
    ymajorgrids=true, 
    ybar=4pt, 
    bar width=8pt,
    legend style={name={leg1},at={(1.25,0.65)},anchor=north west}, 
  ] 
  \addplot[farbe=red] plot coordinates 
    {(1, 6) (2, 8) (3, 5) (4, 13)};
  \addplot[farbe=blue] plot coordinates 
    {(1, 5) (2, 6) (3, 12) (4, 5)};
  \legend{Barplot 1, Barplot 2}
\end{axis}
% Linie
\begin{axis}[
    axis x line=none, xtick=\empty,
    axis y line=right, ylabel=Label 2, 
    ymin=39, ymax=44, 
    ytick={39,...,44},
    legend style={at={(leg1.south west)},anchor=north west}
  ] 
  \addplot[red!50!blue,mark=*] plot coordinates 
    {(01, 40.4) (02, 41.6) (03, 42) (04, 42.3)};
  \legend{Linie}
\end{axis}
\end{tikzpicture} 
\end{document}

gefragt 17 Jun '14, 14:36

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 17 Jun '14, 14:55

Die Frage ist zum Archivieren gedacht, kein Support benötigt. Sie stammt ursprünglich von golatex. Ich habe zwar selbst auch geantwortet, aber alternative Antworten sind sehr willkommen!

(17 Jun '14, 15:48) esdd

Wenn man hinter die \addplot jeweils einen label Befehl setzt, dann kann man mit \ref auch außerhalb der einzelnen axis Umgebungen auf die Legendenbildchen zu greifen und damit in einer Matrix eine gemeinsame Legende erstellen. Dazu lade ich zusätzlich die TikZ Bibliothek matrix.

Open in writeLaTeX
\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{matrix}

\begin{document}
\begin{tikzpicture}[node font=\footnotesize,
  farbe/.style={draw=#1!80!black,fill=#1!20}] 
\pgfplotsset{
    height=4cm, width=7cm,
    scale only axis, 
    xmin=0.5, xmax=4.5,
}
% Barplots
\begin{axis}[
    axis x line=bottom, 
    xtick={0.5, 1, 2, 3, 4, 4.5},
    xticklabels={,2009, 2010, 2011, 2012, }, 
    axis y line=left, ylabel=Label 1,
    ymin=4, ymax=14,
    ytick={4,6,...,14}, 
    ymajorgrids=true, 
    ybar=4pt, 
    bar width=8pt
  ] 
  \addplot[farbe=red] plot coordinates 
    {(1, 6) (2, 8) (3, 5) (4, 13)};
    \label{pgfplots:plot1}
  \addplot[farbe=blue] plot coordinates 
    {(1, 5) (2, 6) (3, 12) (4, 5)};
    \label{pgfplots:plot2}
\end{axis}
% Linie
\begin{axis}[
    axis x line=none, xtick=\empty,
    axis y line=right, ylabel=Label 2, 
    ymin=39, ymax=44, 
    ytick={39,...,44}, 
  ] 
  \addplot[red!50!blue,mark=*] plot coordinates 
    {(01, 40.4) (02, 41.6) (03, 42) (04, 42.3)};
    \label{pgfplots:plot3}
\end{axis}
% Legende
\matrix[
    matrix of nodes,
    anchor=north west,
    draw,% Rahmen um Legende
    inner sep=0.2em,
    column 1/.style={nodes={anchor=center}},
    column 2/.style={nodes={anchor=west},font=\strut},
    draw
  ]
  at([xshift=1.5cm]current axis.north east){
    \ref{pgfplots:plot1}& erster Barplot\\
    \ref{pgfplots:plot2}& zweiter Barplot\\
    \ref{pgfplots:plot3}& Linie\\};
\end{tikzpicture} 
\end{document}

Ergebnis nach zwei Durchläufen (wegen der Referenzen):

alt text

Permanenter link

beantwortet 17 Jun '14, 14:47

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 17 Jun '14, 20:12

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×298
×117
×11

gestellte Frage: 17 Jun '14, 14:36

Frage wurde gesehen: 18,993 Mal

zuletzt geändert: 17 Jun '14, 20:12