python - 具有颜色渐变的 Matplotlib 3D 散点图

标签 python 3d plot matplotlib scatter

如何创建一个带有点颜色渐变的 3D 图?请参阅下面的示例,该示例适用于二维散点图。

编辑(感谢 Chris):我希望从 3D 图中看到的是像 2D 散点图中一样从红色到绿色的点的颜色渐变。 我在 3D 散点图中看到的只是红点。

解决方案:由于某些原因(与我在别处复制的梯度示例相关),我将 xrange 设置为 len-1,这会弄乱 3D 绘图中的所有内容。

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

# Create Map
cm = plt.get_cmap("RdYlGn")

x = np.random.rand(30)
y = np.random.rand(30)
z = np.random.rand(30)
#col = [cm(float(i)/(29)) for i in xrange(29)] # BAD!!!
col = [cm(float(i)/(30)) for i in xrange(30)]

# 2D Plot
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(x, y, s=10, c=col, marker='o')  

# 3D Plot
fig = plt.figure()
ax3D = fig.add_subplot(111, projection='3d')
ax3D.scatter(x, y, z, s=10, c=col, marker='o')  

plt.show()

最佳答案

这是一个带有渐变颜色的 3d 散点图示例:

import matplotlib.cm as cmx
from mpl_toolkits.mplot3d import Axes3D
def scatter3d(x,y,z, cs, colorsMap='jet'):
    cm = plt.get_cmap(colorsMap)
    cNorm = matplotlib.colors.Normalize(vmin=min(cs), vmax=max(cs))
    scalarMap = cmx.ScalarMappable(norm=cNorm, cmap=cm)
    fig = plt.figure()
    ax = Axes3D(fig)
    ax.scatter(x, y, z, c=scalarMap.to_rgba(cs))
    scalarMap.set_array(cs)
    fig.colorbar(scalarMap)
    plt.show()

当然,您可以选择范围在不同值之间的比例,例如 0 和 1。

关于python - 具有颜色渐变的 Matplotlib 3D 散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8891994/

相关文章:

css - 除了反复试验之外,是否有更好的方法来找出 3D 转换的正确 CSS 值?

python - Altair 双下拉菜单

带有因子变量的 R 3d 曲面图

python - 美丽汤 body 提取

python - 重叠形式组之间的面积总和

python - Python中3d中的点到凸包的距离

R ggplot 当图中有多个图时反转图的一个轴而不影响其他图

python - 你能在一行中调用多个方法吗?

python - 将 float 分配为字典键会改变其精度 (Python)

c++ - 在vtk中翻转Y轴