![表面图的颜色取决于半径或与某个点的距离,而不是某个坐标](https://linux22.com/image/471758/%E8%A1%A8%E9%9D%A2%E5%9B%BE%E7%9A%84%E9%A2%9C%E8%89%B2%E5%8F%96%E5%86%B3%E4%BA%8E%E5%8D%8A%E5%BE%84%E6%88%96%E4%B8%8E%E6%9F%90%E4%B8%AA%E7%82%B9%E7%9A%84%E8%B7%9D%E7%A6%BB%EF%BC%8C%E8%80%8C%E4%B8%8D%E6%98%AF%E6%9F%90%E4%B8%AA%E5%9D%90%E6%A0%87.png)
我想知道是否有可能创建一个 3d 曲面图,其中颜色条不取决于一个坐标,而是取决于与原点的距离(极坐标中的半径)。
我找到了几个例子,我可以为 3d 对象创建一个表面图,其中颜色条行为取决于 x 或 y 或 z 坐标,如下所示:(这里它取决于 z 坐标)
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view={60}{45}]
\addplot3 [
surf,
no marks,
z buffer=sort,
samples=30,domain=-1:1,y domain=0:2*pi,
] (
{sqrt(1-x^2) * cos(deg(y))},
{sqrt( 1-x^2 ) * sin(deg(y))},
x*0.5
);
\end{axis}
\end{tikzpicture}
\end{document}
最后我想创建一个像这样的图(用 python 创建):
有人知道如何根据半径而不是 z 坐标来给该图着色吗?非常感谢!
答案1
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}[line join=round]
\begin{axis}[axis equal]
\addplot3[
surf, z buffer=sort,
domain=0:2*pi, samples=60, variable=t,
y domain=0:pi, samples y=60, variable y=p,
point meta=sqrt(x^2+y^2+z^2),
trig format=rad,
] ({sin(t)*(cos(p)+exp(-(40*(p-pi/4)^2)))},{sin(t)*(sin(p)+exp(-(20*(p-pi/2)^2)))},{cos(t)});
\end{axis}
\end{tikzpicture}
\end{document}