Balkendiagramme mit pgfplots zeichnen

Balkendiagramme mit pgfplots zeichnen

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 ...

Ergebnis

% 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}

verwandte Informationen