在3D matplotlib散点图中进行照明

时间:2017-05-04 18:49:29

标签: python-2.7 matplotlib jupyter-notebook lighting scatter3d

我有一个看起来像......云的点云。它在某些地方有凸出的特征,在其他地方有“折痕”。

为了说明我的问题,我在下面附上了一个示例图片(用于创建第一个点云的脚本在最后)。

enter image description here

然而,由于所有点都是红色,并且没有人工照明,因此蓝色矩形内的拓扑无法看到。在同一数据集(第2和第3个图像)的不同视图中更好地显示拓扑。已经包括第二种颜色以进一步说明这一点。

enter image description here

有没有办法在散点图中添加某种光照,这样折痕/凸起更明显?

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

def randrange(n, vmin, vmax):
    return (vmax - vmin)*np.random.rand(n) + vmin

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

n = 3000

# For each set of style and range settings, plot n random points in the box
# defined by x in [23, 32], y in [0, 100], z in [zlow, zhigh].
for c, m, zlow, zhigh in [('r', 'o', -50, -25)]:
    xs = randrange(n, -5000, 5000)
    ys = randrange(n, -5000, 5000)
    #zs = xs**2+ys**2
    zs = (0.1*xs)**2-(0.1*ys**2)-5000
    zs2 = (0.3*xs)**2-(ys**2)-5000
    #zs = randrange(n, zlow, zhigh)
    ax.scatter(xs, ys, zs, c=c, marker=m)
    ax.scatter(xs, ys, zs2, c=c, marker=m)
    ax.view_init(elev=28., azim=-56)
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

plt.show()

0 个答案:

没有答案