code: def plot(
      self,
      X,
      x_component=0,
      y_component=1,
      show_row_markers=True,
      show_column_markers=True,
      show_row_labels=False,
      show_column_labels=False,
  ):
      eig = self._eigenvalues_summary.to_dict(orient="index")
  
      row_chart_markers = None
      row_chart_labels = None
      column_chart_markers = None
      column_chart_labels = None
  
      if show_row_markers or show_row_labels:
          row_coords = self.row_coordinates(X)
          row_coords.columns = [
              f"component {i}" for i in row_coords.columns
          ]
          row_coords = row_coords.assign(
              variable=row_coords.index.name or "row",
              value=row_coords.index.astype(str),
          )
          row_labels = pd.Series(
              row_coords.index, index=row_coords.index
          )
          row_chart = alt.Chart(
              row_coords.assign(label=row_labels)
          ).encode(
              x=alt.X(
                  f"component {x_component}",
                  scale=alt.Scale(zero=False),
                  axis=alt.Axis(
                      title=f"component {x_component} — {eig[x_component]['% of variance'] / 100:.2%}"
                  ),
              ),
              y=alt.Y(
                  f"component {y_component}",
                  scale=alt.Scale(zero=False),
                  axis=alt.Axis(
                      title=f"component {y_component} — {eig[y_component]['% of variance'] / 100:.2%}"
                  ),
              ),
          )
          row_chart_markers = row_chart.mark_circle(
              size=50 if show_row_markers else 0
          ).encode(
              color="variable",
              tooltip=[
                  "variable",
                  "value",
                  f"component {x_component}",
                  f"component {y_component}",
              ],
          )
          if show_row_labels:
              row_chart_labels = row_chart.mark_text().encode(
                  text="label:N"
              )
  
      if show_column_markers or show_column_labels:
          column_coords = self.column_coordinates(X)
          column_coords.columns = [
              f"component {i}" for i in column_coords.columns
          ]
          column_coords = column_coords.assign(
              variable=column_coords.index.name or "column",
              value=column_coords.index.astype(str),
          )
          column_labels = pd.Series(
              column_coords.index, index=column_coords.index
          )
          column_chart = alt.Chart(
              column_coords.assign(label=column_labels)
          ).encode(
              x=alt.X(
                  f"component {x_component}",
                  scale=alt.Scale(zero=False),
                  axis=alt.Axis(
                      title=f"component {x_component} — {eig[x_component]['% of variance'] / 100:.2%}"
                  ),
              ),
              y=alt.Y(
                  f"component {y_component}",
                  scale=alt.Scale(zero=False),
                  axis=alt.Axis(
                      title=f"component {y_component} — {eig[y_component]['% of variance'] / 100:.2%}"
                  ),
              ),
          )
          column_chart_markers = column_chart.mark_circle(
              size=50 if show_column_markers else 0
          ).encode(
              color="variable",
              tooltip=[
                  "variable",
                  "value",
                  f"component {x_component}",
                  f"component {y_component}",
              ],
          )
          if show_column_labels:
              column_chart_labels = column_chart.mark_text().encode(
                  text="label:N"
              )
  
      charts = filter(
          None,
          (
              row_chart_markers,
              row_chart_labels,
              column_chart_markers,
              column_chart_labels,
          ),
      )
  
      return alt.layer(*charts).interactive()
  
imports: from __future__ import annotations
  import functools
  import altair
  import numpy
  import pandas
  from scipy import sparse
  from sklearn.utils import check_array
  from prince import svd, utils
label_desc: Use image node_id 10 for calling the CA obj's underlying member method code with example usage: obj.plot(X, x_component, y_component, show_row_markers, show_column_markers, show_row_labels, show_column_labels) and returns: alt