Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

pgfplots y-Achse rechts und links beschriften

329 views
Skip to first unread message

Christine Roemer

unread,
Feb 1, 2017, 10:42:34 AM2/1/17
to
Hallo,

in dem nachfolgenden Beispiel habe ich drei Werte und möchte das Marktanateillabel nach rechts bringen und den Umsatz links und die Jahre bei x lassen. Wie geht das? habe in der pgf-Doc nichts Passendes gefunden.


\documentclass[paper=a4]{article}
\usepackage{filecontents,pgfplots}
\usepackage{eurosym}
\pgfplotsset{compat=1.14}
\begin{filecontents*}{data.dat}
Jahr Umsatz Marktanteil
2000 200 10
2010 305 15
2015 100 0.5
\end{filecontents*}

\begin{document}
\pgfplotstableread{data.dat}{\Daten}
\begin{tikzpicture}[scale=1]
\begin{axis}[minor tick num=1,
xlabel=Handelsjahr,
ylabel=\textcolor{blue}{Marktanteil \%}/\textcolor{red}{Umsatz Milionen \EUR{}pgfplot} ,
x tick label style={
/pgf/number format/1000 sep=}]
\addplot [red,very thick] table [x={Jahr}, y={Umsatz}] {\Daten};
\addplot [blue,very thick] table [x={Jahr}, y={Marktanteil}] {\Daten};
\end{axis}
\end{tikzpicture}

\end{document}

Mit Gruß
Christine

andy.l...@gmail.com

unread,
Feb 1, 2017, 1:50:27 PM2/1/17
to
Hallo, eine Möglichkeit ist es, zwei Plots zu zeichnen, einen mit linker und einen mit rechter Y-Achse. Damit die Skalierung auf beiden Seiten gleich bleibt, sind die Minima und Maxima der Ordinate explizit anzugeben (damit die Linien etwas Abstand zum Rand haben, habe ich etwas Spielraum gelassen). Um Doppelungen zu vermeiden, werden in einem Plot noch redundante Beschriftungen unterdrückt. Da die volle Skala von 0 bis 300 für den Markanteil zu großzügig ist, ist nur der Wert "10" angegeben. In PGF-Worten:

\documentclass[paper=a4]{article}
\usepackage{filecontents,pgfplots}
\usepackage{eurosym}
\pgfplotsset{compat=1.14}
\begin{filecontents*}{data.dat}
Jahr Umsatz Marktanteil
2000 200 10
2010 305 15
2015 100 0.5
\end{filecontents*}

\begin{document}
\pgfplotstableread{data.dat}{\Daten}

\begin{tikzpicture}[scale=1]
\begin{axis}[minor tick num=1,
axis y line*=left,
xlabel=Handelsjahr,
ymin=-20, ymax=330,
ylabel=\textcolor{red}{Umsatz Milionen \EUR{}pgfplot} ,
x tick label style={
/pgf/number format/1000 sep=}]
\addplot [red,very thick] table [x={Jahr}, y={Umsatz}] {\Daten};
\end{axis}
\begin{axis}[minor tick num=1,
axis y line*=right,
ymin=-20, ymax=330,
xtick=\empty,
ylabel=\textcolor{blue}{Marktanteil \%},
ytick={10}
]
\addplot [blue,very thick] table [x={Jahr}, y={Marktanteil}] {\Daten};
\end{axis}
\end{tikzpicture}
\end{document}

Viele Grüße
Andy

Christine Roemer

unread,
Feb 2, 2017, 2:46:04 AM2/2/17
to
Am Mittwoch, 1. Februar 2017 19:50:27 UTC+1 schrieb andy.l...@gmail.com:
> Hallo, eine Möglichkeit ist es, zwei Plots zu zeichnen, einen mit linker und einen mit rechter Y-Achse. Damit die Skalierung auf beiden Seiten gleich bleibt, sind die Minima und Maxima der Ordinate explizit anzugeben (damit die Linien etwas Abstand zum Rand haben, habe ich etwas Spielraum gelassen). Um Doppelungen zu vermeiden, werden in einem Plot noch redundante Beschriftungen unterdrückt. Da die volle Skala von 0 bis 300 für den Markanteil zu großzügig ist, ist nur der Wert "10" angegeben.

Vielen Dank, eine gute und einfache Möglichkeit.
In meinem Quellcode war ein kleiner, nicht relevanter Fehler

...
ylabel=\textcolor{red}{Umsatz Milionen \EUR{}pgfplot} ,

Das "pgfplot" hatte sich bei einem copy "eingeschlichen", muss also gelöscht werden.

Grüße
Christine
0 new messages