ich hab mir nach längerer Basteleit eine Säulendiagramm zusammengestellt.
Ich habe eine große Datei mit Daten, welche ich in verschiedenen Diagrammen (in verschiedenen Kombinationen) darstellen will.
Möglichkeit 1)
Ich lege für jedes Diagramm eine extra Datei an, welche nur die Daten zu dem jeweiligen Diagramm beinhaltet
==> sehr viel Arbeit, welche ich mir gerne ersparen möchte.
Möglichkeit 2)
Ich verwende einen "Filter" welcher nur gewisse Zeilen berücksichtigt
==> Alle Daten könnten zusammen in einer Datei bleiben
Ich hab mich für Möglichkeit 2 entschieden. Das ganze funktioniert auch wunderbar, abgesehen davon das die X-Achsenbeschriftung aus den "ungefilterten" Daten generiert wird. Zum Beispiel will ich nur Daten aus den vier Zeile 1, 5, 8 und neun berücksichtigen. Die Achsenbeschriftung wird aber unabhängig von meinen gewählten Kriterien aus den den ersten (in diesem Fall 4) Zeilen generiert.
\documentclass[]{scrartcl} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} % correct pdf output (correct umlaut charaters) \usepackage{ngerman} \usepackage{graphicx} \usepackage{pgfplots} \usepackage{pgfplotstable} \usepackage{tikz} \usepackage{filecontents} \pgfplotsset{compat=newest,compat/show suggested version=false} \begin{document} \begin{filecontents}{energiekosten.csv} Anlagentyp;FilterA;FilterB;Energiekosten Typ 1;20;2014;23400 Typ 1;30;2014;23455 Typ 1;20;2016;33434 Typ 1;30;2016;23455 Typ 2;20;2014;55634 Typ 2;30;2014;43455 Typ 2;20;2016;70344 Typ 2;30;2016;23445 Typ 3;20;2014;63400 Typ 3;30;2014;43455 Typ 3;20;2016;23123 Typ 3;30;2016;63455 Typ 4;20;2014;13400 Typ 4;30;2014;43455 Typ 4;20;2016;73434 Typ 4;30;2016;63455 \end{filecontents} \begin{figure}[h]% \centering \begin{tikzpicture} \pgfplotstableread[col sep=semicolon]{energiekosten.csv}\diagdata \begin{axis}[ ybar, x filter/.code={\pgfplotstablegetelem{\coordindex}{FilterA}\of{\diagdata} \ifnum\pgfplotsretval=20 \pgfplotstablegetelem{\coordindex}{FilterB}\of{\diagdata} \ifnum\pgfplotsretval=2016 \else \def\pgfmathresult{} \fi \else \def\pgfmathresult{} \fi }, ylabel={Gesamtenergiekosten}, xtick pos=left, ytick pos=left, xticklabels from table={\diagdata}{Anlagentyp}, xtick=data, x tick label style={rotate=45, anchor=east} ] \addplot table [x expr=\coordindex, y={Energiekosten}] {\diagdata}; \legend{used} \end{axis} \end{tikzpicture} \end{figure} \end{document}