从这个答案如何缩放 pgfplots 中现有的坐标数据?我正在使用y filter
它来处理数据,一切都很好,直到我决定在图中放置一个图例条目。我似乎无法同时使用yfilter
和addlegendenty
以下代码中的行。
我收到这个错误
! 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}