Pgfplots x 刻度之间的条形图

Pgfplots x 刻度之间的条形图

我的 MWE 是:

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{filecontents*}{data.csv}
0,988
4,840
8,520
12,1495
16,1048
20,729
24,1952
28,1881
32,2233
36,5542
40,1855
\end{filecontents*}

\begin{document}

Aniket Bhadane

\begin{tikzpicture}
\begin{axis} [
    xlabel=Months,
    ylabel=Emails,
    grid=both,
    xtick distance = 4,
    ytick distance = 1000,
]
\addplot[ybar,fill] table [x, y, col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}

\end{document}

生成的输出是:

在此处输入图片描述

但我想要的是(注意 X 轴刻度):

在此处输入图片描述

我想让条形图位于 X 轴刻度之间。垂直网格线应位于刻度上,而不是位于条形图的中心。我该怎么做?

答案1

对于这种情况,你可以简单地将 2 添加到 x 值,方法是

\addplot[ybar,fill] table [x expr=\thisrowno{0}+2, col sep=comma] {data.csv};

注意x expr,它允许您指定一些数学表达式。\thisrowno从指定的列号中获取值,其中列计数从零开始。

代码输出

\documentclass{article}

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

\begin{filecontents*}{data.csv}
0,988
4,840
8,520
12,1495
16,1048
20,729
24,1952
28,1881
32,2233
36,5542
40,1855
\end{filecontents*}

\begin{document}

\begin{tikzpicture}
\begin{axis} [
    xlabel=Months,
    ylabel=Emails,
    grid=both,
    xtick distance = 4,
    ytick distance = 1000,
]
\addplot[ybar,fill] table [x expr=\thisrowno{0}+2, col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}
\end{document}

答案2

将以下行添加到轴环境的选项中:

x tick label as interval = true, xticklabel={$\pgfmathprintnumber{\nexttick}$},

这将产生以下输出:

条形图

相关内容