def matplot_plot_point_cloud()

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