+-

如何为点创建带有颜色渐变的3D绘图?请参阅下面的示例,该示例适用于2D散点图.
编辑(感谢Chris):我期望从3D绘图中看到的是从2D红色到绿色的点的颜色渐变,如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()
最佳答案
以下是使用渐变颜色的三维散射示例:
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散点图 - 乐贴网