从 pgf 图中的数据文件设置 x 轴文本标签

从 pgf 图中的数据文件设置 x 轴文本标签

以下是 MWE:

\documentclass{article}

\usepackage{pgfplots, filecontents}
\pgfplotsset{compat=1.8}

\begin{filecontents}{horizontal.dat}
Name Self PR ST PA CO TO
RS 95.8 87.8 94.6 99.2 87.4 91.9
MS 99.2 84.6 91.1 100.0 91.0 91.0
SM 83.4 65.6 72.2 62.5 77.4 71.4
\end{filecontents}

\begin{document}

\pgfplotstableread{horizontal.dat}{\horizontal}
\begin{tikzpicture}[scale=1]
    \begin{axis}[
            ybar,
            xtick=data,
            xticklables from table={\horizontal}{Name}
        ]
        \addplot table [
        x=Name,
      y=TO] {\horizontal};

        \addplot table [
        x=Name,
      y=Self] {\horizontal};
    \end{axis}
\end{tikzpicture}

\end{document}

我所要做的就是绘制一个条形图,其中“名称”下显示的内容作为 X 轴,将“自身”中显示的内容作为第一条条形图的数据,将“TO”中显示的内容作为第二条条形图的数据。

因此,在 X 轴上,RS 将出现两个条形图。一个代表 95.8,另一个代表 91.9,等等。

它一直告诉我 RS 不是一个浮点数!

我该如何解决这个问题?

答案1

这是一次尝试。pgfplotstable是必需的。此解决方案使用foreach循环来读取数据。

注意:使用horizontal.dat输入方式filecontents也同样有效。

在此处输入图片描述

代码

\documentclass{article}

\usepackage{pgfplots,filecontents}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.8}

%\begin{filecontents}{horizontal.dat}
%Name Self PR ST  PA CO TO
%RS 95.8 87.8 94.6 99.2 87.4 91.9
%MS 99.2 84.6 91.1 100.0  91.0 91.0
%SM 83.4 65.6 72.2 62.5 77.4 71.4
%\end{filecontents}


\begin{document}

%\pgfplotstableread{horizontal.dat}{\horizontal}
\pgfplotstableread[col sep=comma]{
Name,Self,PR,ST, PA,CO,TO
RS,95.8,87.8,94.6,99.2,87.4,91.9
MS,99.2,84.6,91.1,100.0, 91.0,91.0
SM,83.4,65.6,72.2,62.5,77.4,71.4
}\horizontal


\begin{tikzpicture}[scale=1]
\begin{axis}[
    height=10cm,
    ybar,
    enlargelimits=0.3,
    xtick=data,
    xticklabels from table={\horizontal}{Name},
    x tick label style={anchor=north,font=\small}
    ]
\foreach \i in {Self,PR,ST,PA,CO,TO}
{\addplot table [x expr=\coordindex, y=\i] {\horizontal}; }
\end{axis}
\end{tikzpicture}

\end{document}

相关内容