如何校正 pgfplot 图例中的 xshift?

如何校正 pgfplot 图例中的 xshift?

使用以下示例代码:

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
        \begin{axis}[
                xlabel=$x$,
                ylabel={$f(x) = x^2 - x +4$}
        ]
        % use TeX as calculator:
        \addplot {x^2 - x +4};
        \addlegendentry{First plot}
        \addplot [xshift=1cm]{x^2 - x +4};
        \addlegendentry{Second plot}
        \end{axis}
\end{tikzpicture}
\end{document}

创建这个带有奇怪图例的图表:

破碎的传奇

我猜这是由于情节的 xshift 属性造成的,但我该如何恢复它呢?

答案1

您可以通过将“图例图像”(即图例中绘制的小图摘录)向后移动相同的距离来恢复此移动。为此,请将选项设置legend image post style={xshift=-1cm}\addplot

需要指出的是,使用xshift并不是真正“正确”的转移情节的方法,因为它在错误的层面上起作用(您只是转移了路径,而不是“逻辑”情节)。您应该调整函数:在这种情况下,您应该使用(x-1)^2 - (x-1) +4而不是x^2 - x +4

另一个选项是使用 来x filter/.code=\pgfmathparse{\pgfmathresult+1}操纵 x 坐标。如果你想在不改变绘图表达式的情况下移动绘图,这会很方便。

下面的代码展示了所有三种方法,也展示了该xshift方法存在的问题:

使用 PGFplots 来改变事物

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
        \begin{axis}[
                xlabel=$x$,
                ylabel={$f(x) = x^2 - x +4$}
        ]
        % use TeX as calculator:
        \addplot {x^2 - x +4};  \addlegendentry{First plot}
        \addplot +[xshift=1cm,legend image post style={xshift=-1cm}]{x^2 - x +4};  \addlegendentry{Second plot}
        \addplot {(x+1)^2 - (x+1) +4};  \addlegendentry[]{Third plot}
        \addplot +[x filter/.code=\pgfmathparse{\pgfmathresult-2}] {(x+1)^2 - (x+1) +4};  \addlegendentry{Fourth plot}
        \end{axis}
\end{tikzpicture}
\end{document}

相关内容