code: def _generate_numeric_distribution_plot(
      data, x_value, y_value, property_name
  ):
      mean = data.mean()
      percentile_90 = data.quantile(0.9)
      percentile_10 = data.quantile(0.1)
      median = data.median()
  
      trace = go.Scatter(
          x=x_value,
          y=y_value,
          fill="tozeroy",
          showlegend=False,
          hovertemplate=f"<b>{property_name}:</b> "
          "%{x}<br><b>Density:</b> %{y}<extra></extra>",
          line={
              "color": feature_distribution_colors["feature"],
              "shape": "linear",
              "width": 5,
          },
      )
      shapes = []
      annotations = []
  
      shapes.append(
          dict(
              type="line",
              x0=mean,
              y0=0,
              x1=mean,
              y1=max(y_value),
              line={
                  "color": feature_distribution_colors["measure"],
                  "dash": "dash",
                  "width": 3,
              },
          )
      )
      mean_xpos = (
          mean + max(x_value) * 0.02
          if median < mean
          else mean - max(x_value) * 0.02
      )
      annotations.append(
          dict(
              x=mean_xpos,
              y=max(y_value) / 2,
              text="<b>Mean</b>",
              showarrow=False,
              textangle=-90,
              font={"size": 12},
          )
      )
  
      shapes.append(
          dict(
              type="line",
              x0=median,
              y0=0,
              x1=median,
              y1=max(y_value),
              line={
                  "color": feature_distribution_colors["measure"],
                  "dash": "dot",
                  "width": 3,
              },
          )
      )
      median_xpos = (
          median - max(x_value) * 0.02
          if median < mean
          else median + max(x_value) * 0.02
      )
      annotations.append(
          dict(
              x=median_xpos,
              y=max(y_value) / 2,
              text="<b>Median</b>",
              showarrow=False,
              textangle=-90,
              font={"size": 12},
          )
      )
  
      shapes.append(
          dict(
              type="line",
              x0=percentile_10,
              y0=0,
              x1=percentile_10,
              y1=max(y_value),
              line={
                  "color": feature_distribution_colors["measure"],
                  "dash": "dashdot",
                  "width": 3,
              },
          )
      )
      annotations.append(
          dict(
              x=percentile_10 - max(x_value) * 0.02,
              y=max(y_value) / 2,
              textangle=-90,
              text="<b>10<sup>th</sup> Percentile</b>",
              showarrow=False,
              font={"size": 12},
          )
      )
  
      shapes.append(
          dict(
              type="line",
              x0=percentile_90,
              y0=0,
              x1=percentile_90,
              y1=max(y_value),
              line={
                  "color": feature_distribution_colors["measure"],
                  "dash": "dashdot",
                  "width": 3,
              },
          )
      )
      annotations.append(
          dict(
              x=percentile_90 + max(x_value) * 0.02,
              y=max(y_value) / 2,
              textangle=-90,
              text="<b>90<sup>th</sup> Percentile</b>",
              showarrow=False,
              font={"size": 12},
          )
      )
  
      xaxis_layout = dict(title=property_name)
      yaxis_layout = dict(title="Density")
  
      return trace, shapes, annotations, xaxis_layout, yaxis_layout
  
file_path: deepchecks/deepchecks/nlp/utils/text_data_plot.py
imports: from typing import List, Optional
  import numpy
  import pandas
  import plotly.graph_objs
  from plotly.subplots import make_subplots
  from deepchecks.nlp.task_type import TaskType, TTextLabel
  from deepchecks.nlp.utils.text import break_to_lines_and_trim
  from deepchecks.nlp.utils.text_properties import TEXT_PROPERTIES_DESCRIPTION
  from deepchecks.utils.dataframes import un_numpy
  from deepchecks.utils.distribution.plot import get_density
  from deepchecks.utils.plot import feature_distribution_colors
  from deepchecks.utils.strings import format_percent, get_docs_link
label_desc: Use image node_id 7 for calling a global function with example usage: _generate_numeric_distribution_plot(data, x_value, y_value, property_name) and returns: trace,  shapes,  annotations,  xaxis_layout,  yaxis_layout