code: def plot_brillouin_zone(bz_lattice, lines=None, labels=None, kpoints=None,
                          fold=False, coords_are_cartesian=False,
                          ax=None, **kwargs):
      
  
      fig, ax = plot_lattice_vectors(bz_lattice, ax=ax)
      plot_wigner_seitz(bz_lattice, ax=ax)
      if lines is not None:
          for line in lines:
              plot_path(line, bz_lattice,
                        coords_are_cartesian=coords_are_cartesian, ax=ax)
  
      if labels is not None:
          plot_labels(labels, bz_lattice,
                      coords_are_cartesian=coords_are_cartesian, ax=ax)
          plot_points(labels.values(), bz_lattice,
                      coords_are_cartesian=coords_are_cartesian,
                      fold=False, ax=ax)
  
      if kpoints is not None:
          plot_points(kpoints, bz_lattice,
                      coords_are_cartesian=coords_are_cartesian,
                      ax=ax, fold=fold)
  
      ax.set_xlim3d(-1, 1)
      ax.set_ylim3d(-1, 1)
      ax.set_zlim3d(-1, 1)
  
      ax.set_aspect('equal')
      ax.axis("off")
  
      return fig
docs: Plots a 3D representation of the Brillouin zone of the structure.
      Can add to the plot paths, labels and kpoints
  
      Args:
          bz_lattice: Lattice object of the Brillouin zone
          lines: list of lists of coordinates. Each list represent a different path
          labels: dict containing the label as a key and the coordinates as value.
          kpoints: list of coordinates
          fold: whether the points should be folded inside the first Brillouin Zone.
              Defaults to False. Requires lattice if True.
          coords_are_cartesian: Set to True if you are providing
              coordinates in cartesian coordinates. Defaults to False.
          ax: matplotlib :class:`Axes` or None if a new figure should be created.
          kwargs: provided by add_fig_kwargs decorator
  
      Returns:
          matplotlib figure