Wie stelle ich bei pgfplots ein, welche Tabellenspalte geplottet wird? Scheints wird die 2. Spalte unvollständig geplottet (mit 1. Spalte als x-Werte).

alt text

Open in Online-Editor
\documentclass[border=2pt, varwidth]{standalone}
%\documentclass[]{article}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{amsmath, amssymb, amsfonts}

\usepackage{filecontents}
\begin{filecontents}{data.csv}
0   0.5905  0.3277  0.2373  0.1681  0.0778  0.0313
1   0.9185  0.7373  0.6328  0.5282  0.3370  0.1875
2   0.9914  0.9421  0.8965  0.8369  0.6826  0.5000
3   0.9995  0.9933  0.9844  0.9692  0.9130  0.8125
4   1.0000  0.9997  0.9990  0.9976  0.9898  0.9688
\end{filecontents}

\begin{document}
\pgfplotsset{compat=newest}
\pgfplotsset{mystyle/.style={%
% allgemein
ybar interval,%=10pt, ?  % Balkendiagramm
/pgf/number format/.cd, use comma, % Kommas als Zahlentrennzeichen
%1000 sep={},
grid=none,
% x
xmin=0,
xmax=5, 
xtick=data, 
xlabel style={anchor=north},
enlarge x limits={lower,rel=1.25},
%symbolic x coords={46,50.1},  %?
every axis x label/.style={at={(current axis.south)},below=8mm},
% y
ymin=0,
ymax=1,
ylabel style={anchor=east, yshift=4pt},
%enlarge y limits=false,
%enlarge y limits={upper,rel=50.25}, % Dummer Effekt
% Legende
legend style={%
at={(1,1), anchor=south east},anchor=south, legend columns=-1}, 
% x und y
axis lines = middle,
axis line style={-latex}, 
ticklabel style = {font=\tiny},
%xticklabel style = {font=\tiny,yshift=0.5ex}
% Noden
%nodes near coords, 
%nodes near coords align={vertical}, 
%every node near coord/.append style={anchor=mid west,rotate=60},
}}%

\begin{tikzpicture}[scale=2.0, font=\tiny,]
\begin{axis}[mystyle, 
width=3.5cm, height=2.5cm,
xlabel={k},
ylabel={$P(X \leq k)$},
]
\addplot[draw=black, thin, fill=red!50] table [] {data.csv};
\end{axis} 
\end{tikzpicture}

\end{document}

gefragt 12 Jan '16, 16:00

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

bearbeitet 12 Jan '16, 21:02

@cis Dein Code ist nicht lauffähig und selbst wenn ich die Klammer um draw,thick entferne, erhalte ich nicht das eingefügte Bild. Eventuell möchtest Du ybar statt ybar interval verwenden?

Die zu verwendenden Spalten kannst Du mit x index und y index als Optionen für table angeben, wobei die Zählung bei 0 beginnt. Ohne Angabe werden also x index=0 und y index=1 verwendet.

(12 Jan '16, 16:32) esdd

Jetzt sollte es laufen. ybar itervall ist gewünscht.

Das mit dem index tut auch :()

Bloß setzt es die Achsenbeschriftungen -wie so oft- an blöde Stellen und zeichnet einen grid in den y-Pfeil. :(

(12 Jan '16, 21:05) cis

plots werden übrigens teilweise deutlich besser, wenn man compat=1.12 setzt, wie das normalerweise auch in einer Warnung von pgfplots empfohlen wird.

(12 Jan '16, 21:33) saputello

Welche Spalte einer Tabelle geplottet wird, kann man mit x index und y index als Optionen von table angeben. Die Zählung der Spalten beginnt dabei mit 0. Fehlt die Angabe, was geplottet werden soll, dann werden die Werte in der ersten Spalte als x-Werte und die der zweiten als y-Werte verwendet. Das entspricht x index=0 und y index=1.

Bei Verwendung von ybar interval muss außerdem das folgende Zitat aus der Dokumentation von pgfplots beachtet werden, das man dort in den Erklärungen zu ybar interval findet:

Consequently, there is one coordinate too much: the last coordinate will only be used to determine the interval width; its y value doesn’t influence the bar appearance.

Die letzte Koordinate bestimmt also nur die Breite des Balkens der vorhergehenden Koordinate. Wenn Du alle Balken von x=0 bis x=4 geplottet haben möchtest, musst Du in der Datendatei eine weitere Zeile mit einer 5 in der ersten Spalte anhängen.

Plot der letzten Spalte:

alt text

Code:

Open in Online-Editor
\documentclass[border=2pt, varwidth]{standalone}
\usepackage{pgfplots}
%\pgfplotsset{compat=1.13}% derzeit aktuelle Version
\pgfplotsset{compat=newest}% Overleaf hat nur Version 1.11

\usepackage{filecontents}
\begin{filecontents}{data.csv}
0   0.5905  0.3277  0.2373  0.1681  0.0778  0.0313
1   0.9185  0.7373  0.6328  0.5282  0.3370  0.1875
2   0.9914  0.9421  0.8965  0.8369  0.6826  0.5000
3   0.9995  0.9933  0.9844  0.9692  0.9130  0.8125
4   1.0000  0.9997  0.9990  0.9976  0.9898  0.9688
5
\end{filecontents}

\begin{document}

\pgfplotsset{mystyle/.style={%
  % allgemein
  ybar interval,%=10pt, ?  % Balkendiagramm
  /pgf/number format/use comma, % Kommas als Zahlentrennzeichen
  % x und y
  axis lines = middle,% < Achsenstil so früh wie möglich einstellen - er ändert weitere Optionen
  axis line style={-latex}, 
  ticklabel style = {font=\tiny},
  % x
  xmin=0,
  xmax=5, 
  xtick=data,
  hide obscured x ticks=false,% <- zum Anzeigen des Ticklabels 0
  xlabel style={anchor=north},
  enlarge x limits={abs=5pt,upper},% <- damit die Pfeilspitze an der y-Achse sichtbar ist
  % y
  ymin=0,
  ymax=1,
  ytickmax=.9,% <- kein Tick oberhalb von y=.9
  ylabel style={anchor=south east},
}}%

\begin{tikzpicture}[scale=2.0, font=\tiny,]
\begin{axis}[mystyle, 
  width=3.5cm, height=2.5cm,
  xlabel={k},
  ylabel={$P(X \leq k)$},
]
  \addplot[draw=black, thin, fill=red!50] table [y index=6] {data.csv};
  \end{axis} 
\end{tikzpicture}
\end{document}

Mit ytickmax=.9 habe ich dabei den Tick einschließlich zugehörigem Label bei y=1 verhindert und mit hide obscured x ticks=false dafür gesorgt, dass das Label für x=0 mit angezeigt wird.

WIe schon mal bei Deiner Frage Wie kann ich bei pgfplots die Pfeilspitzen der Koordinatenachsen editieren? erklärt, werden beim Setzen eines axis lines automatisch eine ganz Reihe von Optionen gesetzt. Hat man die vorher geändert, werden diese Änderungen wieder überschrieben. In Deinem Beispiel sind man diesen Effekt bei der Achsenbeschriftung. Stell deshalb den Stil für die Achsen immer gleich als erstes ein.

Permanenter link

beantwortet 13 Jan '16, 00:30

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 13 Jan '16, 00:35

Dieses Zitat ist aber ganz schrecklich, da die Tabellen extern mit mathematica erzeugt werden :( Die alle nachzubearbeiten ist nicht elegant :(

Aber sauber gelöst. :()

(13 Jan '16, 02:32) cis

PS: Was muss man machen, damit die Säulen thin geteichnet werden, ich glaube, die Option wird oben ignoriert.

(13 Jan '16, 02:33) cis
1

@cis: thin wird schon beachtet, ist aber AFAIR die Voreinstellung. Noch dünner geht beispielsweise mit very thin oder ultra thin. Zu weiteren Optionen für die Liniendicken siehe Abschnitt 4.7.4 in der aktuellen pgfplots-Anleitung.

(13 Jan '16, 08:06) saputello
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×298

gestellte Frage: 12 Jan '16, 16:00

Frage wurde gesehen: 7,457 Mal

zuletzt geändert: 13 Jan '16, 08:10