Diagramm mit Linien

Tabellen und Grafiken erstellen und anordnen


Gast

Diagramm mit Linien

Beitrag 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}

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag 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}

Gast

Beitrag 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...

Gast

Beitrag 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?

Beinschuss
Forum-Meister
Forum-Meister
Beiträge: 809
Registriert: Di 2. Okt 2012, 21:42
Wohnort: NRW

Beitrag 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  

markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Beitrag 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}
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

Gast

Beitrag 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...

Gast

Beitrag 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?

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag 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.

Gast

Beitrag 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}

Antworten