
    -ji
                        S SK Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SK	J
r
  S SKJr  S SKJr  S S	KJr  \R"                  " 5       (       a  S S
KJr  S SKJr  \" \5      r\" S5      SSS.       SS jj5       rg)    )annotations)Callable)Sequence)experimental_func)
get_logger)Study)FrozenTrial)_get_edf_info)_imports)Axes)pltz2.2.0NzObjective Value)targettarget_namec          	     T   [         R                  " 5         [        R                  R	                  S5        [        R
                  " 5       u  p4UR                  S5        UR                  U5        UR                  S5        UR                  SS5        [        R                  " S5      n[        XU5      nUR                  n[        U5      S:X  a  U$ [        U5       H*  u  nu  pUR                  UR                   X" U5      SU	S9  M,     [        U5      S	:  a  UR#                  5         U$ )
a%  Plot the objective value EDF (empirical distribution function) of a study with Matplotlib.

Note that only the complete trials are considered when plotting the EDF.

.. seealso::
    Please refer to :func:`optuna.visualization.plot_edf` for an example,
    where this function can be replaced with it.

.. note::

    Please refer to `matplotlib.pyplot.legend
    <https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html>`_
    to adjust the style of the generated legend.

Args:
    study:
        A target :class:`~optuna.study.Study` object.
        You can pass multiple studies if you want to compare those EDFs.
    target:
        A function to specify the value to display. If it is :obj:`None` and ``study`` is being
        used for single-objective optimization, the objective values are plotted.

        .. note::
            Specify this argument if ``study`` is being used for multi-objective optimization.
    target_name:
        Target's name to display on the axis label.

Returns:
    A :class:`matplotlib.axes.Axes` object.
ggplotz$Empirical Distribution Function PlotzCumulative Probabilityr      tab20gffffff?)coloralphalabel   )r   checkr   styleusesubplots	set_title
set_xlabel
set_ylabelset_ylimget_cmapr
   lineslen	enumerateplotx_valueslegend)studyr   r   _axcmapinfo	edf_linesi
study_namey_valuess              ^/home/james-whalen/.local/lib/python3.13/site-packages/optuna/visualization/matplotlib/_edf.pyplot_edfr1      s    L NN IIMM(LLNEALL78MM+MM*+KK1<< D4D

I
9~	%.y%9!!J
xtAwcT &: 9~
		I    )r'   zStudy | Sequence[Study]r   z%Callable[[FrozenTrial], float] | Noner   strreturnz'Axes')
__future__r   collections.abcr   r   optuna._experimentalr   optuna.loggingr   optuna.studyr   optuna.trialr	   optuna.visualization._edfr
   3optuna.visualization.matplotlib._matplotlib_importsr   is_successfulr   r   __name___loggerr1    r2   r0   <module>rA      s    " $ $ 2 %  $ 3 H HG
X
 7 59(	<"< 2< 	<
 < <r2   