tikzpicture 缺少类别

tikzpicture 缺少类别

我在绘制 tikzpicture 时遇到了麻烦。缺少一个类别。有人知道如何增加画布宽度吗?

提前致谢!

\pgfplotstableread[row sep =\\, col sep = &]{
Level   &Rating \\
0   &2.875  \\
1   &2.954545   \\
2   &2.571429   \\
3   &2.888889   \\
4   &2.923077   \\
5   &2.684211   \\
6   &2.8125 \\
7   &3.043478   \\
8   &3.611111   \\
9   &1.9375 \\
10  &2.833333   \\
11  &2.3125 \\
12  &1.666667   \\
13  &2.684211   \\
14  &2.6    \\
15  &2.75   \\
16  &2.578947   \\
17  &3.333333   \\
18  &2.333333   \\
19  &3  \\
20  &3.3    \\
21  &3.842105   \\
22  &2.916667   \\
23  &2.380952   \\
24  &1.933333   \\
25  &2.6    \\
26  &3.047619   \\
27  &2.833333   \\
28  &2.047619   \\
29  &2.421053   \\
}\mydata

\begin{figure}[hbt!]
\tiny
    \centering
    \resizebox{0.75\columnwidth}{!}{%
    \begin{tikzpicture}[scale=12, transform shape]
        \begin{axis}[
            ybar interval=0.5,
            symbolic x coords={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29},
            xtick=data,
            ]
            \addplot table[x = Level, y = Rating]{\mydata};
        \end{axis}
    \end{tikzpicture}
    }
    \caption{Raw Results of the User Ratings}
    \label{fig:experiment1results}
\end{figure}

答案1

欢迎来到 TeX.SE!如果我理解正确的话,您的抱怨是关于看不到表格最后一行(x = 29)的条形图。这是意料之中的,因为您使用的是ybar interval,而不是ybar。引用pgfplots手册(第节条形图 ):

\addplot+[ybar interval]

这种绘图类型会生成宽度(和偏移)相对于坐标间隔的垂直条。

使用间隔时,有一个概念上的区别:间隔定义为坐标。由于ybar每个间隔都有一个值,因此第条定义为

  1. 的价值第个坐标,
  2. X的价值第坐标作为左间隔边界,
  3. X的值(+1)个坐标作为右间隔边界。

因此,一个坐标太多:最后一个坐标将仅有的用于确定间隔宽度;其值不会影响条形的外观。

这解释了为什么在您的示例中,没有为 (29, 2.421053) 坐标对绘制条形图。我相信您想要的是样式/pgfplots/ybar

下面的示例使用了/pgfplots/ybar。您可以使用 调整条形的宽度/pgf/bar width(见下文)。为了在切换到最新pgfplotsAPI(我使用\pgfplotsset{compat=1.16})时保留这种可能性,我删除了symbolic x coords={...},这在这里似乎没什么用。事实上,x 坐标都是数字,并且在数据中均匀分布。

如果您希望连续主刻度之间的小刻度数不同,可以使用minor x tick num如下所示的 。如果这样做,您可能还需要更改主刻度标签字体大小;x tick label style={font=\small}例如,可以使用 来完成。

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}

\begin{document}

\pgfplotstableread[row sep=\\, col sep=&]{
Level & Rating     \\
0     & 2.875      \\
1     & 2.954545   \\
2     & 2.571429   \\
3     & 2.888889   \\
4     & 2.923077   \\
5     & 2.684211   \\
6     & 2.8125     \\
7     & 3.043478   \\
8     & 3.611111   \\
9     & 1.9375     \\
10    & 2.833333   \\
11    & 2.3125     \\
12    & 1.666667   \\
13    & 2.684211   \\
14    & 2.6        \\
15    & 2.75       \\
16    & 2.578947   \\
17    & 3.333333   \\
18    & 2.333333   \\
19    & 3          \\
20    & 3.3        \\
21    & 3.842105   \\
22    & 2.916667   \\
23    & 2.380952   \\
24    & 1.933333   \\
25    & 2.6        \\
26    & 3.047619   \\
27    & 2.833333   \\
28    & 2.047619   \\
29    & 2.421053   \\
}\mydata

\begin{tikzpicture}
  \begin{axis}[
    ybar, bar width=1.0,
    xtick={0,5,...,30},
    minor x tick num=4, % major divisions divided in 5 minor ones
    ]
  \addplot table[x=Level, y=Rating]{\mydata};
  \end{axis}
\end{tikzpicture}

\end{document}

截屏

相关内容