pgfplot 中“addlegendentry”和“y filter”之间的奇怪交互

pgfplot 中“addlegendentry”和“y filter”之间的奇怪交互

从这个答案如何缩放 pgfplots 中现有的坐标数据?我正在使用y filter它来处理数据,一切都很好,直到我决定在图中放置一个图例条目。我似乎无法同时使用yfilteraddlegendenty以下代码中的行。

我收到这个错误

! Illegal parameter number in definition of \pgfplots@curplotlist.

来自此代码(稍后尝试注释这两行):

\documentclass{article}
\usepackage{pgfplots}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[
    y filter/.code={\pgfmathparse{#1*10.}\pgfmathresult}% try comment
] coordinates {
 ( 1., 1. )
 ( 2., 2. )
 ( 3., 3. )
};
\addlegendentry{Legend Entry};% try comment
\end{axis}
\end{tikzpicture}
\end{document}

出了什么问题?这是一个 Bug 吗?

信息:pdfTeX 3.1415926-2.5-1.40.14 LuaTeX, Version beta-0.76.0-2013061217 (TeX Live 2013)

答案1

事实证明,这是由于x filter手册中描述的一种有点奇怪的行为造成的:

请注意,您可以为每个命令提供不同的x filter/y filter参数\addplot。似乎只有参数存在问题#1 ,我还没有找到原因。如果您提供 ,请使用\pgfmathresult 代替。#1\addplot[x filter/.code={...}]

因此,如果你将代码更改为使用

y filter/.code={\pgfmathparse{\pgfmathresult*10.}\pgfmathresult}

代替

y filter/.code={\pgfmathparse{#1*10.}\pgfmathresult}

一切按预期进行:

\documentclass{article}
\usepackage{pgfplots}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addlegendentry{Legend Entry};
\addplot[
    y filter/.code={\pgfmathparse{\pgfmathresult*10.}\pgfmathresult}
] coordinates {
 ( 1., 1. )
 ( 2., 2. )
 ( 3., 3. )
};
\end{axis}
\end{tikzpicture}
\end{document}

相关内容