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

사용하지 않는 패키지 제거, 행 sep 지정 등 몇 가지 작업을 시도한 결과 다음과 같은 결과가 나왔습니다.

  • 막대 차트는 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}

관련 정보