Improved plot that allows to plot polygons and holes in
        different colors and to change the size and the color of the
        set of points.
        
        The points can be plotted accordingly to a ndarray colormap.
        
        :param c_poly: Polygons color.
        :type c_poly: matplotlib color, 'default' or 't' (transparent)
        :param c_holes: Holes color.
        :type c_holes: matplotlib color, 'default' or 't' (transparent)
        :param c_sop: Set of points color.
        :type c_sop: matplotlib color or colormap
        :param s_sop: Set of points size.
        :type s_sop: float or ndarray
        :param extra_height: Elevates the points in the visualization.
        :type extra_height: float
        :param ret: If True, returns the figure. It can be used to add 
            more elements to the plot or to modify it.
        :type ret: bool
        :param ax: If a matplotlib axes given, this method will 
            represent the plot on top of this axes. This is used to
            represent multiple plots from multiple geometries, 
            overlapping them recursively.
        :type ax: mplot3d.Axes3D, None
        :returns: None, axes
        :rtype: None, mplot3d.Axes3D

def iplot(self, c_poly='default', c_holes='default', c_sop='r',
              s_sop=25, extra_height=0, ret=False, ax=None):
        """
        Improved plot that allows to plot polygons and holes in
        different colors and to change the size and the color of the
        set of points.
        
        The points can be plotted accordingly to a ndarray colormap.
        
        :param c_poly: Polygons color.
        :type c_poly: matplotlib color, 'default' or 't' (transparent)
        :param c_holes: Holes color.
        :type c_holes: matplotlib color, 'default' or 't' (transparent)
        :param c_sop: Set of points color.
        :type c_sop: matplotlib color or colormap
        :param s_sop: Set of points size.
        :type s_sop: float or ndarray
        :param extra_height: Elevates the points in the visualization.
        :type extra_height: float
        :param ret: If True, returns the figure. It can be used to add 
            more elements to the plot or to modify it.
        :type ret: bool
        :param ax: If a matplotlib axes given, this method will 
            represent the plot on top of this axes. This is used to
            represent multiple plots from multiple geometries, 
            overlapping them recursively.
        :type ax: mplot3d.Axes3D, None
        :returns: None, axes
        :rtype: None, mplot3d.Axes3D
        """
        ax = self.surface.iplot(c_poly=c_poly, c_holes=c_holes,
                                ret=True, ax=ax)
        for polyhedron in self.polyhedra:
            ax = polyhedron.plot(color=c_poly, ret=True, ax=ax)
        if c_sop != False:
            p = self.set_of_points
            ax.scatter(p[:, 0], p[:, 1], p[:, 2]+extra_height, 
                       c=c_sop, s=s_sop)
        self.center_plot(ax)
        if ret: return ax