code: def produce_pairplot(
      corpus,
      asian_mode=False,
      category_width_in_pixels=500,
      category_height_in_pixels=700,
      term_width_in_pixels=500,
      term_height_in_pixels=700,
      terms_to_show=3000,
      scaler=scale_neg_1_to_1_with_zero_mean,
      term_ranker=AbsoluteFrequencyRanker,
      use_metadata=False,
      category_projector=CategoryProjector(),
      category_projection=None,
      topic_model_term_lists=None,
      topic_model_preview_size=10,
      metadata_descriptions=None,
      initial_category=None,
      x_dim=0,
      y_dim=1,
      show_halo=True,
      num_terms_in_halo=5,
      category_color_func='(function(x) {return "#5555FF"})',
      protocol="https",
      d3_url_struct=D3URLs(),
      category_focused=False,
      verbose=False,
      use_full_doc=True,
      default_to_term_comparison=True,
      category_x_label="",
      category_y_label="",
      category_tooltip_func="(function(d) {return d.term})",
      term_tooltip_func="(function(d) {return d.term})",
      category_show_axes_and_cross_hairs=False,
      highlight_selected_category=True,
      term_x_label=None,  # used if default_to_term_comparison
      term_y_label=None,  # used if default_to_term_comparison
      wordfish_style=False,
      category_metadata_df=None,
      **kwargs,
  ):
      if category_projection is None:
          if use_metadata:
              category_projection = category_projector.use_metadata().project_with_metadata(
                  corpus, x_dim=x_dim, y_dim=y_dim
              )
          else:
              category_projection = category_projector.project(
                  corpus, x_dim=x_dim, y_dim=y_dim
              )
  
      if initial_category is None:
          initial_category = corpus.get_categories()[0]
      category_scatter_chart_explorer = (
          _get_category_scatter_chart_explorer(
              category_projection, scaler, term_ranker, verbose
          )
      )
      if category_metadata_df is not None:
          if type(category_metadata_df) != pd.DataFrame:
              category_metadata_df = category_metadata_df(corpus)
          category_scatter_chart_explorer = (
              category_scatter_chart_explorer.inject_term_metadata_df(
                  category_metadata_df
              )
          )
      category_scatter_chart_data = (
          category_scatter_chart_explorer.to_dict(
              category=initial_category,
              max_docs_per_category=0,
          )
      )
  
      # initial_category_idx = corpus.get_categories().index(initial_category)
      term_plot_change_func = _get_term_plot_change_js_func(
          wordfish_style, category_focused, initial_category
      )
  
      category_scatterplot_structure = ScatterplotStructure(
          VizDataAdapter(category_scatter_chart_data),
          width_in_pixels=category_width_in_pixels,
          height_in_pixels=category_height_in_pixels,
          asian_mode=asian_mode,
          use_non_text_features=True,
          show_characteristic=False,
          x_label=category_x_label,
          y_label=category_y_label,
          show_axes_and_cross_hairs=category_show_axes_and_cross_hairs,
          full_data="getCategoryDataAndInfo()",
          show_top_terms=False,
          get_tooltip_content=category_tooltip_func,
          color_func=category_color_func,
          show_axes=False,
          horizontal_line_y_position=0,
          vertical_line_x_position=0,
          unified_context=not wordfish_style,
          show_category_headings=False,
          show_cross_axes=True,
          div_name="cat-plot",
          alternative_term_func=term_plot_change_func,
          highlight_selected_category=highlight_selected_category,
      )
      compacted_corpus = AssociationCompactor(
          terms_to_show, use_non_text_features=use_metadata
      ).compact(corpus)
      terms_to_hide = set(
          corpus.get_terms(use_metadata=use_metadata)
      ) - set(compacted_corpus.get_terms(use_metadata=use_metadata))
      if verbose:
          print("num terms to hide", len(terms_to_hide))
          print("num terms to show", compacted_corpus.get_num_terms())
      term_corpus = category_projection.get_corpus()
  
      term_scatter_chart_explorer = ScatterChartExplorer(
          term_corpus,
          minimum_term_frequency=0,
          minimum_not_category_term_frequency=0,
          pmi_threshold_coefficient=0,
          term_ranker=term_ranker,
          use_non_text_features=False,
          add_extra_features=use_metadata,
          score_transform=stretch_0_to_1,
          verbose=verbose,
          dont_filter=True,
      ).hide_terms(terms_to_hide)
  
      if default_to_term_comparison:
          if topic_model_term_lists is not None:
              term_scatter_chart_explorer.inject_metadata_term_lists(
                  topic_model_term_lists
              )
          if metadata_descriptions is not None:
              term_scatter_chart_explorer.inject_metadata_descriptions(
                  metadata_descriptions
              )
  
          if use_metadata:
              tdf = corpus.get_metadata_freq_df("")
          else:
              tdf = corpus.get_term_freq_df("")
  
          scores = RankDifference().get_scores(
              tdf[initial_category],
              tdf[
                  [
                      c
                      for c in corpus.get_categories()
                      if c != initial_category
                  ]
              ].sum(axis=1),
          )
  
          term_scatter_chart_data = term_scatter_chart_explorer.to_dict(
              category=initial_category,
              scores=scores,
              include_term_category_counts=True,
              transform=dense_rank,
              **kwargs,
          )
          y_label = (initial_category,)
          x_label = ("Not " + initial_category,)
          color_func = None
          show_top_terms = True
          show_axes = False
      else:
          term_projection = category_projection.get_term_projection()
          original_x = term_projection["x"]
          original_y = term_projection["y"]
          x_coords = scaler(term_projection["x"])
          y_coords = scaler(term_projection["y"])
          x_label = term_x_label if term_x_label is not None else ""
          y_label = term_y_label if term_y_label is not None else ""
          show_axes = True
          horizontal_line_y_position = 0
          vertical_line_x_position = 0
          term_scatter_chart_explorer.inject_coordinates(
              x_coords,
              y_coords,
              original_x=original_x,
              original_y=original_y,
          )
  
          if topic_model_term_lists is not None:
              term_scatter_chart_explorer.inject_metadata_term_lists(
                  topic_model_term_lists
              )
          if metadata_descriptions is not None:
              term_scatter_chart_explorer.inject_metadata_descriptions(
                  metadata_descriptions
              )
          term_scatter_chart_data = term_scatter_chart_explorer.to_dict(
              category=initial_category,
              category_name=initial_category,
              include_term_category_counts=True,
              # transform=dense_rank,
              **kwargs,
          )
          color_func = '(function(x) {return "#5555FF"})'
          show_top_terms = False
  
      term_scatterplot_structure = ScatterplotStructure(
          VizDataAdapter(term_scatter_chart_data),
          width_in_pixels=term_width_in_pixels,
          height_in_pixels=term_height_in_pixels,
          use_full_doc=use_metadata or use_full_doc,
          asian_mode=asian_mode,
          use_non_text_features=use_metadata,
          show_characteristic=False,
          x_label=x_label,
          y_label=y_label,
          full_data="getTermDataAndInfo()",
          show_top_terms=show_top_terms,
          get_tooltip_content=term_tooltip_func,
          color_func=color_func,
          # horizontal_line_y_position=0,
          # vertical_line_x_position=0,
          show_axes=show_axes,
          topic_model_preview_size=topic_model_preview_size,
          show_category_headings=False,
          div_name="d3-div-1",
          unified_context=not wordfish_style,
          highlight_selected_category=highlight_selected_category,
      )
      return PairPlotFromScatterplotStructure(
          category_scatterplot_structure,
          term_scatterplot_structure,
          category_projection,
          category_width_in_pixels,
          category_height_in_pixels,
          num_terms=num_terms_in_halo,
          show_halo=show_halo,
          d3_url_struct=d3_url_struct,
          x_dim=x_dim,
          y_dim=y_dim,
          protocol=protocol,
      ).to_html()
  
file_path: scattertext/scattertext/categoryprojector/pairplot.py
imports: import numpy
  import pandas
  from scipy.stats import rankdata, pearsonr
  from sklearn.decomposition import PCA, TruncatedSVD
  from sklearn.metrics.pairwise import cosine_distances
  from scattertext.Scalers import stretch_0_to_1, dense_rank
  from scattertext.termcompaction.AssociationCompactor import AssociationCompactor
  from scattertext.termscoring.RankDifference import RankDifference
  from scattertext.viz import ScatterplotStructure, VizDataAdapter
  from scattertext.viz.PairPlotFromScattertextStructure import PairPlotFromScatterplotStructure
  from scattertext.ScatterChartExplorer import ScatterChartExplorer
  from scattertext.categoryprojector.CategoryProjector import CategoryProjector
  from scattertext.viz.BasicHTMLFromScatterplotStructure import D3URLs
  from scattertext.Scalers import scale_neg_1_to_1_with_zero_mean
  from scattertext.termranking.AbsoluteFrequencyRanker import AbsoluteFrequencyRanker
label_desc: Use image node_id 2 for calling a global function with example usage: produce_pairplot(corpus, asian_mode, category_width_in_pixels, category_height_in_pixels, term_width_in_pixels, term_height_in_pixels, terms_to_show, scaler, term_ranker, use_metadata, category_projector, category_projection, topic_model_term_lists, topic_model_preview_size, metadata_descriptions, initial_category, x_dim, y_dim, show_halo, num_terms_in_halo, category_color_func, protocol, d3_url_struct, category_focused, verbose, use_full_doc, default_to_term_comparison, category_x_label, category_y_label, category_tooltip_func, term_tooltip_func, category_show_axes_and_cross_hairs, highlight_selected_category, term_x_label, term_y_label, wordfish_style, category_metadata_df) and returns: PairPlotFromScatterplotStructure