pgfplots: Probleme mit Daten als Text

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: pgfplots: Probleme mit Daten als Text

von mofehl » So 11. Okt 2015, 11:51

Hallo Elke,

tausend Dank für Deine Hilfe! (Wieder einmal!) Auch wenn Punkt (2) offen bleibt, habe ich den Status auf "beantwortet" gesetzt. Vielleicht stelle ich Punkt (2) als eigene Frage in einem neuen Thread. LG

von esdd » So 11. Okt 2015, 01:54

Da ich für den zweiten Punkt keinen Vorschlag habe, habe ich für die anderen beiden Punkte die betreffende Zeile aus den Daten entfernt.

Zu Punkt (1): Zum einen muss pgfplots wissen, dass die bei yticklabels from table angegebene Datentei das Semikolon als Spaltentrenner verwendet. Du müsstest die Option table/col sep=semicolon also nicht nur beim Lesen mit \pgfplotstableread setzen, sondern entweder noch global mit \pgfplotsset oder lokal im optionalen Argument der axis-Umgebung. Alternativ kannst Du auch einfach die schon eingelesene Datei verwenden:
yticklabels from table={\mytable}{Huette},
Außerdem musst Du beim Plotten für y den \coordindex verwenden:
\addplot table [x=FD,y expr=\coordindex] {\mytable};
Zum Punkt (3): Die Reihenfolge lässt sich mit
y dir=reverse
umkehren.

Code (ohne die eine Hütte):

\documentclass[11pt,margin=10pt]{standalone} 
\usepackage{pgfplots,pgfplotstable,filecontents} 

\begin{filecontents*}{table.dat} 
 FD;Huette 
 0.464934622;Vernagth\"utte 
 0.245014422;Neue Traunsteiner H\"utte 
 0.498548701;Karlsbader H\"utte 
 0.224030091;Straubinger Haus 
 0.011425672;Weidener H\"utte 
 0.313373342;Kemptner H\"utte 
 0.094089076;Weilheimer H\"utte 
 0.026307408;Duisburger H\"utte 
\end{filecontents*} 

\pgfplotsset{compat=1.12}%,table/col sep=semicolon}

\pgfplotstableread[col sep=semicolon]{table.dat}{\mytable} 

\begin{document} 
\begin{tikzpicture} 
\begin{axis}[ 
    xbar, 
    scaled ticks=false, 
    /pgf/number format/fixed, 
    /pgf/number format/precision=3, 
    nodes near coords, 
    xmin=0.0, 
    xmax=1.0, 
    xtick={0.0,0.2,...,1.0}, 
    yticklabels from table={\mytable}{Huette}, 
    ytick=data,
    y dir=reverse
] 

\addplot table [x=FD,y expr=\coordindex] {\mytable}; 

\end{axis} 
\end{tikzpicture} 
\end{document}

pgfplots: Probleme mit Daten als Text

von mofehl » Sa 10. Okt 2015, 20:07

Moin,

folgendes Problem beschäftigt mich im Moment. Ich habe eine Tabelle, die ich als Balkendiagramm darstellen möchte. Die Tabelle enthält für die Ordinate nur Text, für die Abzisse Zahlen und Text.

Hier erstmal das MWE:
\documentclass[11pt,margin=10pt]{standalone}
\usepackage{tikz,pgfplots,pgfplotstable,filecontents}

\begin{filecontents*}{table.dat}
FD;Huette
0.464934622;Vernagth\"utte
0.245014422;Neue Traunsteiner H\"utte
0.498548701;Karlsbader H\"utte
0.224030091;Straubinger Haus
0.011425672;Weidener H\"utte
n.v.;Rappenseeh\"utte
0.313373342;Kemptner H\"utte
0.094089076;Weilheimer H\"utte
0.026307408;Duisburger H\"utte
\end{filecontents*}

\pgfplotstableread[col sep=semicolon]{table.dat}{\mytable}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
	compat=1.11,
	xbar,
	scaled ticks=false,
	/pgf/number format/fixed,
	/pgf/number format/precision=3,
	nodes near coords,
	xmin=0.0,
	xmax=1.0,
	xtick={0.0,0.2,...,1.0},
	%yticklabels from table={table.dat}{Huette},
	ytick=data,
	symbolic y coords={Vernagth\"utte,Neue Traunsteiner H\"utte,Karlsbader H\"utte,Straubinger Haus,Weidener H\"utte,Rappenseeh\"utte,Kemptner H\"utte,Weilheimer H\"utte,Duisburger H\"utte},
]

\addplot table [x=FD,y=Huette] {\mytable};

\end{axis}
\end{tikzpicture}
\end{document}
Gleich drei Dinge möchte ich ändern:

(1) Anstelle die yticks händisch über symbolic y coords einzugeben, wäre mir lieber, ich könnte sagen: Nimm einfach die Spalte "Huette" und nimm das als yticks. Im Internet und in der Anleitung bin ich auf yticklabels from table gestoßen. (Im Code auskommentiert.) Das funktioniert leider nicht bei mir.

(2) In der Tabelle sind alle x-Werte zahlen bis auf eine, die "n.v." heißt. Diese möchte ich auch so dargestellt haben.

(3) Die Reihenfolge der y-Werte soll genau andersherum sein, also Vernagthütte ganz oben, Duisburger Hütte ganz unten.

Von den drei Punkten ist der erste am wichtigsten. Wer kann mir helfen?

Bild
Dateianhänge
Problem.png
Problem.png (48.88 KiB) 1202 mal betrachtet

Nach oben