code: def __draw_group_circles(plot_df, metric, scales, size_constants):
      """Draws a circle for each group, color-coded by the result of the parity test.
      The groups are spread around the central reference group according to their disparity.
      """
  
      circle_tooltip_encoding = [
          alt.Tooltip(
              field="attribute_value",
              type="nominal",
              title=Label.SINGLE_GROUP,
          ),
          alt.Tooltip(
              field="tooltip_group_size",
              type="nominal",
              title=Label.GROUP_SIZE,
          ),
          alt.Tooltip(
              field=f"tooltip_parity_test_explanation_{metric}",
              type="nominal",
              title=Label.TEST,
          ),
          alt.Tooltip(
              field=f"tooltip_disparity_explanation_{metric}",
              type="nominal",
              title=Label.DISPARITY,
          ),
          alt.Tooltip(
              field=f"{metric}",
              type="quantitative",
              format=".2f",
              title=f"{metric}".upper(),
          ),
      ]
  
      return (
          alt.Chart(plot_df)
          .transform_calculate(y_position="2")
          .mark_circle(opacity=1)
          .encode(
              alt.X(
                  f"{metric}_disparity_rank:Q",
                  scale=scales["circles_x"],
                  axis=no_axis(),
              ),
              alt.Y(
                  "y_position:Q",
                  scale=alt.Scale(domain=[3, 1]),
                  axis=no_axis(),
              ),
              alt.Color(
                  f"{metric}_parity_result:O",
                  scale=scales["color"],
                  legend=None,
              ),
              size=alt.value(size_constants["group_circle_size"]),
              tooltip=circle_tooltip_encoding,
          )
      )
  
imports: import altair
  import pandas
  from aequitas.plot.commons.helpers import no_axis, transform_ratio, format_number, get_chart_metadata
  from aequitas.plot.commons.tooltips import get_tooltip_text_group_size, get_tooltip_text_disparity_explanation, get_tooltip_text_parity_test_explanation
  from aequitas.plot.commons.style.classes import Title, Subtitle, Parity_Result, Annotation, Legend
  from aequitas.plot.commons.style.text import FONT
  from aequitas.plot.commons.style.sizes import Summary_Chart
  from aequitas.plot.commons import initializers
  from aequitas.plot.commons import validators
  from aequitas.plot.commons import labels
label_desc: Use image node_id 8 for calling a global function with example usage: __draw_group_circles(plot_df, metric, scales, size_constants) and returns: alt