Pgfplots unterschlägt letzte Zeile von .csv-Datei

Tabellen und Grafiken erstellen und anordnen


pointloma
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: Sa 23. Apr 2016, 16:01

Pgfplots unterschlägt letzte Zeile von .csv-Datei

Beitrag von pointloma »

Hallo Forum,

ich versuche mit Pgfplots eine Darstellung aus einer csv-Datei zu plotten. Aus einem mir unbekannten Grund wird jedoch die letzte Zeile nicht dargestellt. Kann sich das einer erklären?

Die Daten gehen bis 06-15. Ich habe mir Abhilfe geschaffen, indem ich einfach noch eine weitere Zeile eingefügt habe mit 0ern, damit wird mir dann auch die Zeile 06-15 angezeigt. Würde mich trotzdem interessieren, wo der Fehler liegt.
\documentclass{beamer}
\setbeamertemplate{navigation symbols}{}

\usetheme{Warsaw}
\usecolortheme{dolphin}
\usepackage[german]{babel} %deutscher Sprachraum

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
\usepackage[version=4]{mhchem}
\usepackage{tabularx}
\usepackage{pgfplotstable}


\begin{document}

\begin{frame}\frametitle{Ergebnisse gemittelt}
\begin{figure}[T] \vspace{-0.4cm}
\pgfplotstableread[col sep=semicolon] {huglinm.csv} {\huglinm}
\begin{tikzpicture}
		\begin{axis}
		[
		xlabel=Jahreszahl,
		ylabel=Huglin-Index,
		width=\textwidth,height=7.3cm,
	  ytick={1200,1300,1400,1500,1600,1700,1800,1900,2000,2100,2200,2300},
		ymajorgrids,
		xmin=56-65,
		xmax=16-25,
		ymin=1200,
		legend style={at={(0.05,0.9)},anchor=north west},
		legend entries = {Geisenheim, Ahr, Franken} ,
		symbolic x coords={56-65,66-75,76-85,86-95,96-05,06-15},
		ybar interval=0.7
		]
		\addplot [fill=lightgray!10, ybar legend] table [y={G},x={J}] {\huglinm};
		\addplot [fill=lightgray!80, ybar legend] table [y={A},x={J}] {\huglinm};
		\addplot [fill=lightgray!150, ybar legend] table [y={F},x={J}] {\huglinm};

		\end{axis}	
	\end{tikzpicture}
\end{figure}
\end{frame}

\end{document}
Die csv.-Datei ist wie folgt aufgebaut:
J;G;A;F
56-65;1541.4;1388.1336;1360.395
66-75;1549.1;1471.2323;1380.71
76-85;1495.4;1443.1529;1351
86-95;1637.5;1545.5012;1464.87
96-05;1742.4;1638.7176;1562.31
06-15;1817.5;1672.5309;1644.065

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Du möchtest nicht ybar intervall sondern ybar. Sieh Dir in der Doku den Unterschied an. Dann sind noch ein paar kleinere Anpassungen und Korrekturen nötig, die im folgenden kommentiert sind.
\begin{filecontents*}{huglinm.csv}
J;G;A;F 
 56-65;1541.4;1388.1336;1360.395 
 66-75;1549.1;1471.2323;1380.71 
 76-85;1495.4;1443.1529;1351 
 86-95;1637.5;1545.5012;1464.87 
 96-05;1742.4;1638.7176;1562.31 
 06-15;1817.5;1672.5309;1644.065 
\end{filecontents*}

\documentclass{beamer}
\setbeamertemplate{navigation symbols}{}

\usetheme{Warsaw}
\usecolortheme{dolphin}
\usepackage[german]{babel} %deutscher Sprachraum

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{booktabs}
\usepackage[version=4]{mhchem}
\usepackage{tabularx}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.14}% immer gleich nach dem Laden des Pakets setzen!


\begin{document}

\begin{frame}\frametitle{Ergebnisse gemittelt}
\begin{figure}[T] \vspace{-0.4cm}
\pgfplotstableread[col sep=semicolon] {huglinm.csv} {\huglinm}
\begin{tikzpicture}
      \begin{axis}
      [
      xlabel=Jahreszahl,
      ylabel=Huglin-Index,
      width=\textwidth,height=7.3cm,
     ytick={1200,1300,1400,1500,1600,1700,1800,1900,2000,2100,2200,2300},
      ymajorgrids,
      xmin=56-65,
      xmax=06-15,% <- Koordinate korrigiert
      ymin=1200,
      legend style={at={(0.05,0.9)},anchor=north west},
      legend entries = {Geisenheim, Ahr, Franken} ,
      symbolic x coords={56-65,66-75,76-85,86-95,96-05,06-15},
      xtick=data,% oder xtick={56-65,66-75,76-85,86-95,96-05,06-15},
      enlarge x limits={abs=25pt},% ausreichend Platz für Breite der ersten und letzten Koordinate
      ybar% <-Du willst das und nicht ybar intervall
      ]
      \addplot [fill=lightgray!10, ybar legend] table [y={G},x={J}] {\huglinm};
      \addplot [fill=lightgray!80, ybar legend] table [y={A},x={J}] {\huglinm};
      \addplot [fill=lightgray!150, ybar legend] table [y={F},x={J}] {\huglinm};

      \end{axis}   
   \end{tikzpicture}
\end{figure}
\end{frame}
\end{document}

pointloma
Forum-Anfänger
Forum-Anfänger
Beiträge: 14
Registriert: Sa 23. Apr 2016, 16:01

Beitrag von pointloma »

Ich danke dir vielmals! Ja, das sieht deutlich besser aus. Ich hatte vorher mit ybar das Problem, dass die Säulen "auf einem Fleck" waren und nicht nebeneinander ausgegeben wurden, weswegen ich nach einer Alternative gesucht hatte. Danke dir nochmal.

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Falls Deine Frage damit beantwortet ist, kannst Du bitte noch den Status entsprechend ändern? Danke.

Antworten