Ejemplo n.º 1
0
    def do_3d_projection(self, renderer):
        from mpl_toolkits.mplot3d import proj3d
        from mpl_toolkits.mplot3d.art3d import zalpha
        from matplotlib import colors as mcolors

        # transform and sort in z direction
        v = np.array(
            proj3d.proj_transform_clip(*self._offsets3d, M=renderer.M)[:3])
        idx = v[2].argsort()[::-1]
        vzs = v[2, idx]

        self.set_offsets(v[:2, idx].transpose())
        super().set_array(self._A0[idx])

        fcs = zalpha(self._facecolor3d,
                     vzs) if self._depthshade else self._facecolor3d
        fcs = mcolors.colorConverter.to_rgba_array(fcs, self._alpha)
        self.set_facecolors(fcs)

        ecs = zalpha(self._edgecolor3d,
                     vzs) if self._depthshade else self._edgecolor3d
        ecs = mcolors.colorConverter.to_rgba_array(ecs, self._alpha)
        self.set_edgecolors(ecs)

        return min(vzs) if vzs.size > 0 else np.nan
Ejemplo n.º 2
0
    def do_3d_projection(self, renderer):
        from mpl_toolkits.mplot3d import proj3d
        from mpl_toolkits.mplot3d.art3d import zalpha
        from matplotlib import colors as mcolors

        # transform and sort in z direction
        v = np.array(proj3d.proj_transform_clip(*self._offsets3d, M=renderer.M)[:3])
        idx = v[2].argsort()[::-1]
        vzs = v[2, idx]

        self.set_offsets(v[:2, idx].transpose())
        super().set_array(self._A0[idx])

        fcs = zalpha(self._facecolor3d, vzs) if self._depthshade else self._facecolor3d
        fcs = mcolors.colorConverter.to_rgba_array(fcs, self._alpha)
        self.set_facecolors(fcs)

        ecs = zalpha(self._edgecolor3d, vzs) if self._depthshade else self._edgecolor3d
        ecs = mcolors.colorConverter.to_rgba_array(ecs, self._alpha)
        self.set_edgecolors(ecs)

        return min(vzs) if vzs.size > 0 else np.nan
Ejemplo n.º 3
0
 def do_3d_projection(self, renderer):
     s = self._segment3d
     xs, ys, zs = zip(*s)
     vxs, vys, vzs, vis = proj3d.proj_transform_clip(xs, ys, zs, renderer.M)
     self._path2d = Path(np.column_stack([vxs, vys]), self._code3d)
     return min(vzs)