如何在matplotlib的3D表面图中将颜色显示为距原点距离的函数?

cliu:

我正在尝试使用python的matplotlib包在球坐标中绘制某个函数Q(theta,phi)。我希望颜色显示为到原点的距离的函数,而不是z坐标的函数。有没有办法做到这一点?这是我用于生成3D表面图的代码:

%matplotlib notebook

fig = plt.figure(figsize=(12,12))

ax = fig.add_subplot(111, projection='3d')
X, Y = Q*np.sin(Theta)*np.cos(Phi), Q*np.sin(Theta)*np.sin(Phi)
Z = Q*np.cos(Theta)
ax.plot_surface(X, Y, Z, cmap=plt.cm.YlGnBu_r)
ax.set_zlim(-1, 1)
ax.set_ylim(-1, 1)
ax.set_xlim(-1, 1)
ax.set_xlabel('J_x')
ax.set_ylabel('J_y')
ax.set_zlabel('J_z')

plt.show()

我没有足够的声誉来发布我创建的剧情。它类似于此链接中的图:https : //matplotlib.org/3.1.1/gallery/mplot3d/surface3d.html如您所见,颜色是z坐标的函数,而不是到原点的距离的函数。

ted930511:

您应该facecolor在中指定plot_surface,而不是cmap

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator
import numpy as np


fig = plt.figure()
ax = fig.gca(projection='3d')

# Make data.
X = np.arange(-5, 5, 0.25)
xlen = len(X)
Y = np.arange(-5, 5, 0.25)
ylen = len(Y)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

d = np.sqrt(X**2+Y**2+Z**2)
d = d/d.max()

# Plot the surface with face colors taken from the array we made.
surf = ax.plot_surface(X, Y, Z, facecolors=plt.cm.viridis(d), linewidth=0)

# Customize the z axis.
ax.set_zlim(-1, 1)
ax.w_zaxis.set_major_locator(LinearLocator(6))

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

matplotlib(mplot3d)-如何在3D图中增加轴的尺寸(拉伸)?

在Matplotlib的3D图中将箭头放在向量上

如何在Python中将3D数据绘制为2D网格颜色图?

在单个3D图中混合表面和散点图

matplotlib中的3d表面

在Python Matplotlib中更改3D表面图中的网格线粗细

matplotlib 3D表面的透明度和颜色梯度?

如何影响3D力图中的链接距离?

Matplotlib lib 3d表面图,第4维为颜色

配置matplotlib颜色条以匹配3D表面值

如何在Jasper Report 3D条形图中显示总和值?

如何在matplotlib 3D表面图上突出显示切片?

如何在3d matplotlib图形中更改轴的颜色?

情节:如何在3D图中为相机视图设置手动缩放?

如何创建3D表面图

如何在R中的3D散点图中更改数据点的颜色

如何在mpld3(Python Matplotlib D3)图中显示希腊符号?

在R中的3D表面图中更改颜色比例

如何使颜色条引用3D图中的标记而不是Matlab中的表面

如何在3D散点图中(在R中)将2D图像投影为表面?

如何在matplotlib中旋转3D表面

matplotlib 3d 表面显示不正确的 x 和 y 数据

Matplotlib 3d 绘图:在 2 个表面上获取单个颜色图

matplotlib 3D 线图,整个图中的颜色编码

如何在VTK中将表面显示为三角剖分线?

如何在 d3.js 中为条形图中的每个条形分配不同的颜色

Matplotlib 平滑 3D 表面数据

如何在 matplotlib 3d 图中删除轴值

基于使用 Matplotlib 的 3D 表面的某些阈值的条件颜色图