pgfplots:如何使轴穿过原点?

pgfplots:如何使轴穿过原点?

对于pgfplots,在我目前看到的所有 2D 示例以及手册中,轴的位置似乎都是根据绘图框内的位置指定的,即相对于顶部、底部。如何指定 x 轴和 y 轴在原点相交?它们如何通过其他用户指定的坐标对?

答案1

正如约瑟夫所说,为了让轴​​线通过原点,可以使用以下axis lines=middle选项:

\begin{axis}[
    axis lines=middle
]
\addplot {x^2+rand};
\end{axis}

要选择轴线要经过的任意点,一种实用的方法可能是使用和键转换数据点和标签x filter/.codexticklabel这些键可以包装成自定义样式,如axis lines origin={<x>,<y>}。这种方法的问题在于,根据您选择的原点,刻度标签最终可能会变得非常奇怪。

\pgfplotsset{
    axis line origin/.style args={#1,#2}{
        x filter/.append code={ % Check for empty or filtered out numbers
                \ifx\pgfmathresult\empty\else\pgfmathparse{\pgfmathresult-#1}\fi
            },
        y filter/.append code={
                \ifx\pgfmathresult\empty\else\pgfmathparse{\pgfmathresult-#2}\fi
            },
        xticklabel=\pgfmathparse{\tick+#1}\pgfmathprintnumber{\pgfmathresult},
        yticklabel=\pgfmathparse{\tick+#2}\pgfmathprintnumber{\pgfmathresult}
    }
}
...

\begin{axis}[
    axis lines=middle,
    axis line origin={1,2}
]
\addplot +[domain=-2:2] {x^2+rand};
\end{axis}


答案2

要绘制通过原点的轴,您需要稍微误导一下的middle位置:

\begin{axis}[axis lines = middle]

或者

\begin{axis}[axis x line = middle]

等等。

相关内容