Ich versuche gerade ein Säulendiagramm zu erstellen. Die gesamte x-Achse besteht dabei aus Strings (Namen von magn. Kernen). Die y-Achse enthält das Volumen (float). Wie sage ich Später soll das in eine CSV Datei stehen. Wie muss die CSV aussehen? Bisher sieht sie so aus: Öffne in Overleaf
x,y ETD 29/16/10,9.60 ETD 34/17/11,13.21 ETD 39/20/13,19.92 ETD 44/22/15,29.96 ETD 49/25/16,40.34 PQ 20/20,5.80 PQ 26/20,10.15 PQ 26/25,12.47 PQ 32/20,14.43 PQ 32/30,21.37 Muss ich dann pgfplot sagen, dass die Trennung mit einem Komma erfolgt? Hier das Minimalbeispiel für das "String-Problem": Öffne in Overleaf
\documentclass{scrartcl} \usepackage{amsmath} \usepackage[normalem]{ulem} \usepackage{tikz} \usepackage{pgfplots} \pgfplotsset{compat=newest} \usepgfplotslibrary{dateplot} \usepackage{subcaption} \usepackage{filecontents} \begin{filecontents}{datensuperfein.dat} x y ETD 29/16/10 9.60 ETD 34/17/11 13.21 ETD 39/20/13 19.92 ETD 44/22/15 29.96 ETD 49/25/16 40.34 PQ 20/20 5.80 PQ 26/20 10.15 PQ 26/25 12.47 PQ 32/20 14.43 PQ 32/30 21.37 \end{filecontents} \begin{document} \begin{figure} \centering \begin{tikzpicture} \begin{axis}[ %width=\linewidth, % Scale the plot to \linewidth grid=major, % Display a grid grid style={dashed,gray!30}, % Set the style xlabel=X Axis, ylabel=Y Axis, legend style={at={(0.5,-0.2)},anchor=north}, % Put the legend below the plot x tick label style={rotate=90,anchor=east} % Display labels sideways ] \addplot+[ybar] table [x index=0, y expr=\thisrowno{1}] {datensuperfein.dat}; \legend{Plot} \end{axis} \end{tikzpicture} \caption{Caption} \end{figure} \end{document} |
Lade das Paket Die Beschriftungen der Ticks an der x-Achse kannst Du direkt aus der Tabelle einlesen lassen, als x-Werte verwendest Du dann den Koordinatenindex Öffne in Overleaf
% Erzeugen der csv Datei für dieses Beispiel \begin{filecontents*}{datensuperfein.csv} x,y ETD 29/16/10,9.60 ETD 34/17/11,13.21 ETD 39/20/13,19.92 ETD 44/22/15,29.96 ETD 49/25/16,40.34 PQ 20/20,5.80 PQ 26/20,10.15 PQ 26/25,12.47 PQ 32/20,14.43 PQ 32/30,21.37 \end{filecontents*} \documentclass{scrartcl} \usepackage{amsmath} \usepackage{pgfplotstable}% lädt auch pgfplots,tikz,xcolor,graphicx,... \pgfplotsset{compat=newest} \begin{document} \begin{figure} \centering \begin{tikzpicture} \pgfplotstableread[col sep=comma]{datensuperfein.csv}{\loadedtable}% laden der Tabelle \begin{axis}[ grid=major, grid style={dashed,gray!30}, xlabel=X Axis, ylabel=Y Axis, legend style={at={(xticklabel cs:.5)},anchor=north},% Legende abhänging von xticks positioniert x tick label style={rotate=90,anchor=east}, xticklabels from table={\loadedtable}{x},% verwende die Werte aus der Spalte "x" für die Tickbeschriftung xtick=data% jeder x-Wert bekommt einen Tick ] \addplot+[ybar] table [x expr=\coordindex, y = y] {\loadedtable}; \legend{Plot} \end{axis} \end{tikzpicture} \caption{Caption} \end{figure} \end{document} Ergebnis: beantwortet 06 Jun '18, 21:43 esdd |
Eigentlich sind das zwei Fragen. Bitte möglichst immer nur eine Frage auf einmal stellen. Und ja: Wenn eine CSV-Datei einen Aufbau hat, der nicht der in der
pgfplots
-Anleitung dokumentierten Voreinstellung (z. B. Leerzeichen zur Spaltentrennung, Zeilenumbruch zur Zeilentrennung) entspricht, dann sollte man über die entsprechenden Optionen dem Tabellenparser vonpgfplots
mitteilen, was stattdessen als Trennzeichen verwendet wird.