考虑以下 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}