class_docstr: !
  @brief Common cluster visualizer for 1-, 2- and 3-dimensional data.
  @details `cluster_visualizer_multidim` visualizer can be used to display clusters in N-dimensional data.
  
  The general difference between `cluster_visualizer` and `cluster_visualizer_multidim` is a way of representation
  of 3-dimensional data. In case of `cluster_visualizer` 3-dimensional data is displayed in 3-dimensional plot with
  `x0`, `x1` and `x2` axis. In case of `cluster_visualizer_multidim` it displayed on three 2-dimensional plots:
  `(x0, x1)`, `(x0, x2)` and `(x1, x2)`.
  
  There is an example where sample `Atom` is used for clustering and displayed by `cluster_visualizer`:
  @code
      from pyclustering.utils import read_sample
      from pyclustering.samples.definitions import FCPS_SAMPLES
      from pyclustering.cluster import cluster_visualizer
      from pyclustering.cluster.dbscan import dbscan
  
      sample = read_sample(FCPS_SAMPLES.SAMPLE_ATOM)
      clusters = dbscan(sample, 15, 3).process().get_clusters()
  
      visualizer = cluster_visualizer()
      visualizer.append_clusters(clusters, sample)
      visualizer.show()
  @endcode
  
  Visualized clustering results of `Atom` data:
  @image html dbscan_atom_visualizer.png "Fig. 1. DBSCAN clustering results (3-dimensional data 'Atom')."
  
  @see cluster_visualizer_multidim
docstr: !
  @brief Draw canvas cluster descriptor.
  
  @param[in] ax (Axis): Axis of the canvas where canvas cluster descriptor should be displayed.
  @param[in] dimension (uint): Canvas dimension.
  @param[in] cluster_descr (canvas_cluster_descr): Canvas cluster descriptor that should be displayed.
  
  @return (fig) Figure where clusters are shown.
docstr_tok: ["!","@","brief","Draw","canvas","cluster","descriptor",".","@","param","[","in","]","ax","(","Axis",")",":","Axis","of","the","canvas","where","canvas","cluster","descriptor","should","be","displayed",".","@","param","[","in","]","dimension","(","uint",")",":","Canvas","dimension",".","@","param","[","in","]","cluster_descr","(","canvas_cluster_descr",")",":","Canvas","cluster","descriptor","that","should","be","displayed",".","@","return","(","fig",")","Figure","where","clusters","are","shown","."]
code: def __draw_canvas_cluster(self, ax, dimension, cluster_descr):
      """!
      @brief Draw canvas cluster descriptor.
  
      @param[in] ax (Axis): Axis of the canvas where canvas cluster descriptor should be displayed.
      @param[in] dimension (uint): Canvas dimension.
      @param[in] cluster_descr (canvas_cluster_descr): Canvas cluster descriptor that should be displayed.
  
      @return (fig) Figure where clusters are shown.
  
      """
  
      cluster = cluster_descr.cluster
      data = cluster_descr.data
      marker = cluster_descr.marker
      markersize = cluster_descr.markersize
      color = cluster_descr.color
  
      for item in cluster:
          if dimension == 1:
              if data is None:
                  ax.plot(
                      item[0],
                      0.0,
                      color=color,
                      marker=marker,
                      markersize=markersize,
                  )
              else:
                  ax.plot(
                      data[item][0],
                      0.0,
                      color=color,
                      marker=marker,
                      markersize=markersize,
                  )
  
          elif dimension == 2:
              if data is None:
                  ax.plot(
                      item[0],
                      item[1],
                      color=color,
                      marker=marker,
                      markersize=markersize,
                  )
              else:
                  ax.plot(
                      data[item][0],
                      data[item][1],
                      color=color,
                      marker=marker,
                      markersize=markersize,
                  )
  
          elif dimension == 3:
              if data is None:
                  ax.scatter(
                      item[0],
                      item[1],
                      item[2],
                      c=color,
                      marker=marker,
                      s=markersize,
                  )
              else:
                  ax.scatter(
                      data[item][0],
                      data[item][1],
                      data[item][2],
                      c=color,
                      marker=marker,
                      s=markersize,
                  )
  
imports: import itertools
  import math
  import matplotlib.pyplot
  import matplotlib.gridspec
  from mpl_toolkits.mplot3d import Axes3D
  from pyclustering.utils.color import color
label_desc: Use image node_id 10 for calling the cluster_visualizer obj's underlying member method code with example usage: obj.__draw_canvas_cluster(ax, dimension, cluster_descr) without return types