in tools/vis_utils.py [0:0]
def matplot_plot_point_cloud(ptcloud, pointsize=20, azim=90, elev=90,
figsize=(8, 8), title=None, sticks=None, lim=None,
cmap='gist_ncar', ax=None, subsample=None,
flip_y=False):
if lim is None:
lim = np.abs(ptcloud).max()
nkp = int(ptcloud.shape[1])
pid = np.linspace(0., 1., nkp)
rgb = (cm.get_cmap(cmap)(pid)[:, :3]*255.).astype(np.int32)
if subsample is not None:
with NumpySeedFix():
prm = np.random.permutation(nkp)[0:subsample]
pid = pid[prm]
rgb = rgb[prm, :]
ptcloud = ptcloud[:, prm]
if flip_y:
ptcloud[1, :] = -ptcloud[1, :]
if ax is not None:
fig = None
else:
fig = plt.figure(figsize=figsize)
ax = fig.add_subplot(111, projection='3d')
ax.view_init(elev=elev, azim=azim)
if sticks is not None:
for stick in sticks:
line = ptcloud[:, [stick[0], stick[1]]]
xs, ys, zs = line
ax.plot(xs, ys, zs, color='black')
xs, ys, zs = ptcloud
ax.scatter(xs, ys, zs, s=pointsize, c=pid, marker='.', cmap=cmap)
ax.set_xlim(-lim, lim)
ax.set_ylim(-lim, lim)
ax.set_zlim(-lim, lim)
ax.set_zticklabels([])
ax.set_yticklabels([])
ax.set_xticklabels([])
plt.axis('off')
if title is not None:
ax.set_title(title)
plt.show()
return fig