【发布时间】:2012-02-12 02:26:17
【问题描述】:
如何为点创建带有颜色渐变的 3D 图?请参见下面的示例,该示例适用于 2D 散点图。
编辑(感谢 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 散点图有什么问题?您希望从中看到什么以及您实际看到了什么?从你编码你到
Axes3D.scatter的电话似乎没问题。 -
我期望从 3D 图中看到的是从红色到绿色的点的颜色渐变,就像在 2D 散点图中一样。我在 3D 散点图中看到的只是红点。
标签: python 3d plot matplotlib scatter