pgfkeys 与 pgfplots/colormap 错误

pgfkeys 与 pgfplots/colormap 错误

考虑以下 MWE:

\documentclass[tikz]{standalone}

\usepackage{tikz,pgfplots}
\pgfplotsset{%
  compat=newest,
  colormap={orangeyellow}{color=(orange) color=(yellow)}
}

\begin{document}
   \begin{tikzpicture}
      \begin{axis}[
         domain=0:180,
         y domain=0:360,
         z buffer=sort,
         colormap/orangeyellow]
         \addplot3[surf] ({sin(x)*cos(y)},{sin(x)*sin(y)},{cos(x)});
      \end{axis}      
   \end{tikzpicture}
\end{document}

我得到了错误

Package pgfkeys Error: I do not know the key '/tikz/colormap/orangeyellow' and I am going to ignore it. Perhaps you misspelled it.

但是,输出结果正确,因为(我认为)pgfplots 会自动使用最后定义的颜色图。这种方法暂时解决了问题,但如果我要定义颜色图,我仍然需要一个真正的解决方案。

此外 (主要是),我不明白为什么 pgfkeys 认为我指的是/tikz/colormap而不是/pgfplots/colormap。它显然不会对预定义的 执行此操作colormap/redyellow,也不会对我传递给环境的任何其他键执行此操作axis

答案1

正确的使用键是colormap name=orangeyellow。参见例如这个相关答案以获得更多选项。

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepgfplotslibrary{colormaps}%
\pgfplotsset{%
  compat=newest,
  colormap={orangeyellow}{
  color=(orange) color=(yellow)
  },
}

\begin{document}
   \begin{tikzpicture}
      \begin{axis}[
         domain=0:180,
         y domain=0:360,
         z buffer=sort,
         colormap name=orangeyellow]
         \addplot3[surf] ({sin(x)*cos(y)},{sin(x)*sin(y)},{cos(x)});
      \end{axis}      
   \end{tikzpicture}
\end{document}

在此处输入图片描述

如果您想使用自己的语法,则需要定义该名称的样式。

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepgfplotslibrary{colormaps}%
\pgfplotsset{%
  compat=newest,
  colormap={orangeyellow}{
  color=(orange) color=(yellow)
  },
  colormap/orangeyellow/.style={
        colormap name=orangeyellow,
    },
}

\begin{document}
   \begin{tikzpicture}
      \begin{axis}[
         domain=0:180,
         y domain=0:360,
         z buffer=sort,
         colormap/orangeyellow]
         \addplot3[surf] ({sin(x)*cos(y)},{sin(x)*sin(y)},{cos(x)});
      \end{axis}      
   \end{tikzpicture}
\end{document}

相关内容