построение столбчатой ​​диаграммы с помощью pgfplots

построение столбчатой ​​диаграммы с помощью pgfplots

Я хотел бы создать столбчатую диаграмму с помощью pgfplots.

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

Но получил следующую ошибку:

! 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};

решение1

После нескольких попыток, таких как удаление неиспользуемых пакетов, указание разделителя строк и т. д., выяснилось, что:

  • столбчатые диаграммы являются одномерными
  • поэтому вы указываете только одно значение
 \begin{tikzpicture}
  \begin{axis}[
        xlabel=name,
        xtick=data,
        xticklabels from table={\mytable}{name},    % <<<
        ylabel=value
      ]
    \addplot table[x=value] {\mytable}; % <<<
  \end{axis}
 \end{tikzpicture}

Если бы вы указали y=value, вы бы снова получили ошибки:

    \addplot table[y=value] {\mytable};

Попытка прочитать столбец с именами (символами) в качестве значений приведет к ошибке:

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

Связанный контент