code: def create_settings(self):
      self.x_source = Choice(
          "Type of measurement to plot on X-axis",
          SOURCE_CHOICE,
          doc="""\
  You can plot two types of measurements:
  
  -  *%(SOURCE_IM)s:* For a per-image measurement, one numerical value is
     recorded for each image analyzed. Per-image measurements are produced
     by many modules. Many have **MeasureImage** in the name but others do
     not (e.g., the number of objects in each image is a per-image
     measurement made by the **Identify** modules).
  -  *%(SOURCE_OBJ)s:* For a per-object measurement, each identified
     object is measured, so there may be none or many numerical values
     recorded for each image analyzed. These are usually produced by
     modules with **MeasureObject** in the name.
  """
          % globals(),
      )
  
      self.x_object = LabelSubscriber(
          "Select the object to plot on the X-axis",
          "None",
          doc="""\
  *(Used only when plotting objects)*
  
  Choose the name of objects identified by some previous module (such as
  **IdentifyPrimaryObjects** or **IdentifySecondaryObjects**) whose
  measurements are to be displayed on the X-axis.
  """,
      )
  
      self.x_axis = Measurement(
          "Select the measurement to plot on the X-axis",
          self.get_x_object,
          "None",
          doc="""Choose the measurement (made by a previous module) to plot on the X-axis.""",
      )
  
      self.y_source = Choice(
          "Type of measurement to plot on Y-axis",
          SOURCE_CHOICE,
          doc="""\
  You can plot two types of measurements:
  
  -  *%(SOURCE_IM)s:* For a per-image measurement, one numerical value is
     recorded for each image analyzed. Per-image measurements are produced
     by many modules. Many have **MeasureImage** in the name but others do
     not (e.g., the number of objects in each image is a per-image
     measurement made by **Identify** modules).
  -  *%(SOURCE_OBJ)s:* For a per-object measurement, each identified
     object is measured, so there may be none or many numerical values
     recorded for each image analyzed. These are usually produced by
     modules with **MeasureObject** in the name.
  """
          % globals(),
      )
  
      self.y_object = LabelSubscriber(
          "Select the object to plot on the Y-axis",
          "None",
          doc="""\
  *(Used only when plotting objects)*
  
  Choose the name of objects identified by some previous module (such as
  **IdentifyPrimaryObjects** or **IdentifySecondaryObjects**) whose
  measurements are to be displayed on the Y-axis.
  """,
      )
  
      self.y_axis = Measurement(
          "Select the measurement to plot on the Y-axis",
          self.get_y_object,
          "None",
          doc="""Choose the measurement (made by a previous module) to plot on the Y-axis.""",
      )
  
      self.xscale = Choice(
          "How should the X-axis be scaled?",
          SCALE_CHOICE,
          None,
          doc="""\
  The X-axis can be scaled with either a *linear* scale or a *log* (base
  10) scaling.
  
  Log scaling is useful when one of the measurements being plotted covers
  a large range of values; a log scale can bring out features in the
  measurements that would not easily be seen if the measurement is plotted
  linearly.
  """,
      )
  
      self.yscale = Choice(
          "How should the Y-axis be scaled?",
          SCALE_CHOICE,
          None,
          doc="""\
  The Y-axis can be scaled with either a *linear* scale or with a *log*
  (base 10) scaling.
  
  Log scaling is useful when one of the measurements being plotted covers
  a large range of values; a log scale can bring out features in the
  measurements that would not easily be seen if the measurement is plotted
  linearly.
  """,
      )
  
      self.title = Text(
          "Enter a title for the plot, if desired",
          "",
          doc="""\
  Enter a title for the plot. If you leave this blank, the title will
  default to *(cycle N)* where *N* is the current image cycle being
  executed.
  """,
      )
  
file_path: CellProfiler/src/frontend/cellprofiler/modules/displayscatterplot.py
imports: import numpy
  from cellprofiler_core.constants.measurement import IMAGE
  from cellprofiler_core.module import Module
  from cellprofiler_core.setting import Measurement
  from cellprofiler_core.setting.choice import Choice
  from cellprofiler_core.setting.subscriber import LabelSubscriber
  from cellprofiler_core.setting.text import Text
label_desc: Use image node_id 1 for calling the DisplayScatterPlot obj's underlying member method code with example usage: obj.create_settings() without return types