code: def iplot(self, c_poly='default', c_holes='default', c_sop='r',
                s_sop=25, extra_height=0, ret=False, ax=None):
          
          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
docs: 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