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

未使用のパッケージを削除したり、行区切りを指定したりするなど、いくつか試してみた結果、次のようになりました。

  • 棒グラフは1次元である
  • 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}

関連情報