Ich möchte mit pgfplots ein Balkendiagramm erstellen.
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread[col sep=comma] {
name,value
A,1
B,2
C,1
D,3
}\mytable
\pgfplotsset{%
compat=1.8,
ybar,
compat/show suggested version=false,
}
\begin{tikzpicture}
\begin{axis}[
xlabel=name,
xtick=data,
xticklabels from table={\mytable}{name},
ylabel=value
]
\addplot table[x=name,y=value] {\mytable};
\end{axis}
\end{tikzpicture}
\end{document}
Aber ich habe den folgenden Fehler erhalten:
! Package PGF Math Error: Could not parse input 'A' as a floating point number,
sorry. The unreadable part was near 'A'..
See the PGF Math package documentation for explanation.
Type H <return> for immediate help.
...
l.26 ...\addplot table[x=name,y=value] {\mytable};
Antwort1
Nachdem ich ein paar Dinge ausprobiert hatte, wie das Entfernen nicht verwendeter Pakete, das Angeben von Zeilentrennungen usw., stellte sich Folgendes heraus:
- Balkendiagramme sind eindimensional
- Sie geben also nur einen Wert an
\begin{tikzpicture}
\begin{axis}[
xlabel=name,
xtick=data,
xticklabels from table={\mytable}{name}, % <<<
ylabel=value
]
\addplot table[x=value] {\mytable}; % <<<
\end{axis}
\end{tikzpicture}
Wenn Sie angeben würden y=value
, würden Sie erneut Fehlermeldungen erhalten:
\addplot table[y=value] {\mytable};
Der Versuch, eine Spalte mit Namen (Zeichen) als Werte zu lesen, führt zu einem Fehler:
\addplot table[x=name ...
% https://tex.stackexchange.com/questions/705829/plot-bar-chart-with-pgfplots
\documentclass{standalone}
%\usepackage{tikz}
\usepackage{pgfplots}
%\pgfplotsset{compat=newest}
%\usepackage{pgfplotstable}
\begin{document}
\pgfplotstableread[row sep=\\,col sep=comma] {
name,value\\
A,1\\
B,2\\
C,1\\
D,3\\
}\mytable
\pgfplotsset{%
compat=1.8,
ybar,
compat/show suggested version=false,
}
\begin{tikzpicture}
\begin{axis}[
xlabel=name,
xtick=data,
xticklabels from table={\mytable}{name}, % <<<
ylabel=value
]
\addplot table[x=value] {\mytable}; % <<<
\end{axis}
\end{tikzpicture}
\end{document}