表面图的颜色取决于半径或与某个点的距离,而不是某个坐标

表面图的颜色取决于半径或与某个点的距离,而不是某个坐标

我想知道是否有可能创建一个 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 创建):

来自 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}

带脊的蓝红黄色球体

相关内容