在以下条形图中,如何沿两个方向将 x 轴扩大 1 厘米?
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[ybar,symbolic x coords={foo,bar,baz},x=2cm]
\addplot coordinates { (foo,1) (bar,3) (baz,2) };
\end{axis}
\end{tikzpicture}
\end{document}
问题是,当使用符号坐标时,我无法工作enlarge x limits
。abs value
使用x=2cm
设置距离之间这些条形图工作正常,但我如何控制外条形图和地块边界之间的距离?
答案1
键abs value=bar
定义值,如果扩大限制处于活动状态,则将使用。若未处于活动状态,则会被忽略。
因此,激活放大限制也将激活abs value
。这可以通过 来实现enlarge x limits={true,abs value=bar}
,或者,等效地,通过 来实现enlarge x limits={abs=bar}
。
此外,您可能需要使用xtick=data
- 否则 pgfplots 会尝试在条形图之间放置刻度标记并将其分配给其中一个条形图。
总结一下:enlarge x limits={abs=bar}, xtick=data
完成工作。它之所以有效是因为bar
是第二个符号坐标。因此,它的索引为 1。由于largelimits必然需要数值,因此它使用符号坐标的索引。因此,abs=bar
会导致限制扩大一个单位——在您的情况下为 2cm。请注意,foo
索引为 0,因此不会起作用。
这种“符号上的数字”无疑将功能发挥到了极致。如果您觉得想要半个单位,那么您应该认真考虑返回数字坐标,并结合类似 的内容xtick={0,1,2}, xticklabel=foo,bar,baz
。它的效果与 相同symbolic x coords
,尽管数据文件“说话”的程度较低。
答案2
您可以给出enlarge x limits
一个介于 0 和 1 之间的数字作为百分比。但这也会导致滴答声重复。为了避免这种情况,您也可以给出xtick=data
选项。
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[enlarge x limits=0.3,xtick=data,ybar,symbolic x coords={foo,bar,baz},x=2cm]
\addplot coordinates { (foo,1) (bar,3) (baz,2) };
\end{axis}
\end{tikzpicture}
\end{document}