我的 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}