Seite 1 von 2
Diagramm mit Linien
Verfasst: Di 31. Okt 2017, 23:55
von Gast
Guten Abend
Ich würde gerne ein Diagramm mit Punkten und Linien erstellen, bekunde allerdings Mühe...
Kann mir jemand erklären, was ich falsch gemacht habe?
\documentclass[12pt,a4paper]{report}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\usetikzlibrary{arrows.meta}
\definecolor{myorange2}{rgb}{1,0.3,0}
\usepackage{caption}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\begin{document}
\noindent
\begin{minipage}{\linewidth}
\begin{tikzpicture}
\pgfplotstableread{
Jahr I II
{2008} 102 3
{2009} 130 11
{2010} 156 6
{2011} 155 8
{2012} 173 12
{2013} 169 23
{2014} 169 26
{2015} 181 34
}{\data};
\begin{axis}[
width=\textwidth,
height=0.9,
axis lines=left,
ylabel={Anzahl},
ytick={2,4,6,8},
extra y tick style={grid=major,
tick label style={xshift=-1cm}},
xlabel={Jahr},
xtick={0,...,8},
xticklabels={{2008},{2009},{2010},{2011},{2012},{2013},{2014},{2015}},
xtick label style={/pgf/number format/1000 sep=},
]
\addplot [fill=myorange2]table[x=Jahr, y=I]
\addplot [fill=black]table[x=Jahr, y=II]
\end{axis}
\end{tikzpicture}
\captionof{figure}{Text}
\end{minipage}
\vspace{0.75cm}
\end{document}
Verfasst: Mi 1. Nov 2017, 02:36
von Bartman
Dein Beispiel ist nicht lauffähig.
Meine Auslegung Deines Wunsches nach einem Diagramm mit Punkten und Linien:
\documentclass[12pt,a4paper]{report}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\usetikzlibrary{arrows.meta}
\definecolor{myorange2}{rgb}{1,0.3,0}
\usepackage{caption}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{blindtext}
\usepackage{showframe}
\begin{document}
\blindtext
\begin{center}
\begin{minipage}{\linewidth}
\begin{tikzpicture}
\pgfplotstableread{
Jahr I II
{2008} 102 3
{2009} 130 11
{2010} 156 6
{2011} 155 8
{2012} 173 12
{2013} 169 23
{2014} 169 26
{2015} 181 34
}{\data}
\begin{axis}[
width=.95\textwidth,% <- geändert
height=9cm,% <- geändert
axis lines=left,
ylabel={Anzahl},
% ytick={2,4,6,8},
grid=major,
xlabel={Jahr},
% xtick={0,...,8},
% xticklabels={{2008},{2009},{2010},{2011},{2012},{2013},{2014},{2015}},
xticklabel style={/pgf/number format/1000 sep=}% <- Leerzeichen entfernt
]
\addplot [myorange2, mark=*] table [x=Jahr, y=I] {\data};% <- ergänzt
\addplot [mark=*] table [x=Jahr, y=II] {\data};% <- ergänzt
\end{axis}
\end{tikzpicture}
\captionof{figure}{Text}
\end{minipage}
\end{center}
\blindtext
\end{document}
Verfasst: Mi 1. Nov 2017, 07:49
von Gast
Das sieht ja wunderbar aus! Vielen Dank für die rasche Hilfe.

Nun habe ich allerdings noch eine kleine Frage:
Da die Anzahl von I viel grösser ist als bei II, würde ich gerne zwei y-Achsen (ein noch rechts) verwenden.
Wie ist das möglich?
Habe es auf verschiedene Arten versucht, aber die Datei war dann nicht mehr lauffähig...
Verfasst: Mi 1. Nov 2017, 07:56
von Gast
Wenn ich die Grafik in meine Arbeit übernehme, werden leider auch halbe Jahreszahlen angegeben. Also 2009.5, 2010.5
An was könnte das liegen?
Verfasst: Mi 1. Nov 2017, 09:56
von Beinschuss
Anonymous hat geschrieben:Wenn ich die Grafik in meine Arbeit übernehme, werden leider auch halbe Jahreszahlen angegeben. Also 2009.5, 2010.5 An was könnte das liegen?
Das kann ich reproduzieren, wenn ich z.B. die Dokumentklasse von report auf scrreprt ändere und dadurch die Textweite größer wird. Dadurch bekommt das Diagramm auch mehr Raum. Workaround: Passe den Wert für die Breite des Diagramms an, z.B.
width=.85\textwidth,% <- geändert
Verfasst: Mi 1. Nov 2017, 10:09
von markusv
Option xtick=data sollte das Problem (auch) beheben:
\documentclass[12pt,a4paper]{scrreprt}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\usetikzlibrary{arrows.meta}
\definecolor{myorange2}{rgb}{1,0.3,0}
\usepackage{caption}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{blindtext}
\usepackage{showframe}
\begin{document}
\blindtext
\begin{center}
\begin{minipage}{\linewidth}
\begin{tikzpicture}
\pgfplotstableread{
Jahr I II
{2008} 102 3
{2009} 130 11
{2010} 156 6
{2011} 155 8
{2012} 173 12
{2013} 169 23
{2014} 169 26
{2015} 181 34
}{\data}
\begin{axis}[
width=.95\textwidth,
height=9cm,
axis lines=left,
ylabel={Anzahl},
grid=major,
xlabel={Jahr},
xtick=data,% <- ergänzt
xticklabel style={/pgf/number format/1000 sep=}
]
\addplot [myorange2, mark=*] table [x=Jahr, y=I] {\data};
\addplot [mark=*] table [x=Jahr, y=II] {\data};
\end{axis}
\end{tikzpicture}
\captionof{figure}{Text}
\end{minipage}
\end{center}
\blindtext
\end{document}
Verfasst: Mi 1. Nov 2017, 12:45
von Gast
Vielen Dank für die Tipps. Das funktioniert soweit.
Da die Anzahl von I viel grösser ist als bei II, würde ich gerne zwei y-Achsen (ein noch rechts) verwenden.
Wie ist das möglich?
Habe es auf verschiedene Arten versucht, aber die Datei war dann nicht mehr lauffähig...
Verfasst: Mi 1. Nov 2017, 12:48
von Gast
Da die Anzahl von I viel grösser ist als bei II, würde ich gerne zwei y-Achsen (ein noch rechts) verwenden.
Dabei soll die Linie von I sich nach der linken Achse und die Linie II nach der rechten Achse richten.
Natürlich müsste die linke Achse dann mit I und die rechte Achse mit II beschriftet werden.
Kann mir da jemand helfen?
Verfasst: Mi 1. Nov 2017, 12:55
von Bartman
Anonymous hat geschrieben:Da die Anzahl von I viel grösser ist als bei II, würde ich gerne zwei y-Achsen (ein noch rechts) verwenden.
\documentclass[fontsize=12pt]{scrreprt}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\usetikzlibrary{arrows.meta}
\definecolor{myorange2}{rgb}{1,0.3,0}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{blindtext}
\usepackage{showframe}
\begin{document}
\blindtext
\begin{center}
\begin{minipage}{\linewidth}
\begin{tikzpicture}
\pgfplotsset{
set layers,
scale only axis,
width=.8\textwidth,
height=9cm
}
\pgfplotstableread{
Jahr I II
{2008} 102 3
{2009} 130 11
{2010} 156 6
{2011} 155 8
{2012} 173 12
{2013} 169 23
{2014} 169 26
{2015} 181 34
}{\data}
\begin{axis}[
axis lines=left,
ylabel={Anzahl (I)},
xlabel={Jahr},
xtick=data,
xticklabel style={/pgf/number format/1000 sep=}
]
\addplot [myorange2, mark=*] table [x=Jahr, y=I] {\data};
\end{axis}
\begin{axis}[
axis lines=right,
ylabel={Anzahl (II)},
xlabel={Jahr},
axis x line=none
]
\addplot [mark=*] table [x=Jahr, y=II] {\data};
\end{axis}
\end{tikzpicture}
\captionof{figure}{Text}
\end{minipage}
\end{center}
\blindtext
\end{document}
Ich habe in meinem Beispiel grid=major absichtlich entfernt, weil ich die Anzeige für beide y-Achsen verwirrend finde.
Verfasst: Mi 1. Nov 2017, 18:27
von Gast
Hallo Bartmann
Vielen Dank!
Nun noch eine letzte Frage, hoffe ich zumindest:
Ich habe die Beschriftungsfarbe geändert. Wie kann ich auch die Farbe der Zahlen ändern (zugehörige Zahlen zu I)?
Habe es leider nicht hinbekommen.
\documentclass[fontsize=12pt]{scrreprt}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\usetikzlibrary{arrows.meta}
\definecolor{myorange2}{rgb}{1,0.3,0}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{blindtext}
\usepackage{showframe}
\begin{document}
\blindtext
\begin{center}
\begin{minipage}{\linewidth}
\begin{tikzpicture}
\pgfplotsset{
set layers,
scale only axis,
width=.8\textwidth,
height=9cm
}
\pgfplotstableread{
Jahr I II
{2008} 102 3
{2009} 130 11
{2010} 156 6
{2011} 155 8
{2012} 173 12
{2013} 169 23
{2014} 169 26
{2015} 181 34
}{\data}
\begin{axis}[
axis lines=left,
ylabel=\textcolor{myorange2}{Anzahl (I)},
xlabel={Jahr},
xtick=data,
xticklabel style={/pgf/number format/1000 sep=}
]
\addplot [myorange2, mark=*] table [x=Jahr, y=I] {\data};
\end{axis}
\begin{axis}[
axis lines=right,
ylabel={Anzahl (II)},
xlabel={Jahr},
axis x line=none
]
\addplot [mark=*] table [x=Jahr, y=II] {\data};
\end{axis}
\end{tikzpicture}
\captionof{figure}{Text}
\end{minipage}
\end{center}
\blindtext
\end{document}