使用符号坐标时按绝对值放大限值

使用符号坐标时按绝对值放大限值

在以下条形图中,如何沿两个方向将 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 limitsabs 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}

在此处输入图片描述

相关内容