我正在尝试在条形图上放置 5 个条形,并在 x 轴上放置符号标签。以下代码几乎可以正常工作,但第一个和最后一个条形部分超出了图形区域。我查看了十几个类似问题的示例,但似乎找不到一个符合我的问题的示例(我希望所有条形都在图形区域中)。我的 WME(相信它的名字)是:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[ybar,
bar width=40pt,
xlabel={Classes},
ylabel={Class Count},
ymin=0,
ymax=60,
ytick ={0,10,20,30,40,50,60},
xtick =data,
axis x line=bottom,
axis y line=left,
symbolic x coords={0-10,11-20,21-30,31-40,41-50}
]
\addplot plot[draw=black, fill=gray] coordinates {
(0-10, 5)
(11-20,30)
(21-30,50)
(31-40,20)
(41-50,15)
};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
这是一种方法enlarge x limits
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar,
bar width=30pt,
xlabel={Classes},
ylabel={Class Count},
ymin=0, ymax=60,
ytick ={0,10,20,30,40,50,60},
xtick =data,
axis x line=bottom,
axis y line=left,
symbolic x coords={0-10,11-20,21-30,31-40,41-50},
enlarge x limits=0.2,
]
\addplot plot[black, fill=gray] coordinates {
(0-10, 5)
(11-20,30)
(21-30,50)
(31-40,20)
(41-50,15)
};
\end{axis}
\end{tikzpicture}
\end{document}
enlarge x limits=0.5
以下是具有和 的相同图表bar width=20pt
:
使用 PGFPlots 时,您应始终使用\pgfplotsset{compat=...}
。这将设置所使用的 PGFPlots 版本。PGFPlots 不断发展,新版本的行为将与旧版本不同。上述代码在不同compat
级别下编译时不会有所不同。 -但这并不能保证输出在未来版本中不会改变或中断。这就是为什么对级别进行硬编码很重要的原因compat
。