
    -ji                       S SK Jr  S SKJr  S SK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  \(       a  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  S SKJr  S SKJr  S SKJr  \	" S5       SSSS.         SS jjj5       rSS jr            SS jr      S S jr         S!S jr!g)"    )annotations)defaultdictN)Any)TYPE_CHECKING)experimental_func)_get_slice_plot_info)_PlotValues)_SlicePlotInfo)_SliceSubplotInfo)_imports)Callable)Study)FrozenTrial)Axes)Colormap)
matplotlib)PathCollection)pltz2.2.0zObjective Value)targettarget_namec               V    [         R                  " 5         [        [        XX#5      5      $ )a  Plot the parameter relationship as slice plot in a study with Matplotlib.

.. seealso::
    Please refer to :func:`optuna.visualization.plot_slice` for an example.

Args:
    study:
        A :class:`~optuna.study.Study` object whose trials are plotted for their target values.
    params:
        Parameter list to visualize. The default is all parameters.
    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.
)r   check_get_slice_plotr   )studyparamsr   r   s       `/home/james-whalen/.local/lib/python3.13/site-packages/optuna/visualization/matplotlib/_slice.py
plot_slicer      s"    @ NN/vSTT    c           	     `   [        U R                  5      S:X  a  [        R                  " 5       u  pU$ [        R                  " S5      nSn[        R                  R                  S5        [        U R                  5      S:X  aM  [        R                  " 5       u  pVUR                  S5        [        U R                  S   XcX@R                  5      nO[        R                  S   S   S-  n[        R                  S   S   n	[        R                  " S[        U R                  5      S	U[        U R                  5      -  U	4S
9u  pVUR                  S5        [        U R                  5       H   u  pXj   n[        XX4U R                  5      nM"     UR                  WUS9nUR                  S5        U$ )Nr   Bluesg?ggplot   z
Slice Plotzfigure.figsize   T)shareyfigsize)axTrial)lensubplotsr   get_cmapstyleuse	set_title_generate_slice_subplotr   r   rcParamssuptitle	enumeratecolorbar	set_label)info_r&   cmappadding_ratiofigaxsscmin_figwidthfighightisubplotaxcbs                r   r   r   C   sc   
4==Q	 << DMIIMM(
4==Q<<>l# %T]]1%5s-QaQab "**+;<Q?!C&&'78;<<!C$66A	
 	\" $DMM2JAB(d4K[K[\B 3 <<s<#DNN7Jr   c                D   UR                  U R                  US9  S n[        / / / 5      n[        / / / 5      n[        U R                  U R
                  U R                  U R                  5       H  u  ppUc  US:w  d  U	c  U	S:w  d  M  U(       aS  UR                  R                  U5        UR
                  R                  U	5        UR                  R                  U
5        Mt  UR                  R                  U5        UR
                  R                  U	5        UR                  R                  U
5        M     U R                  (       a  UR                  S5        SnU R                  (       a=  UR                  nUR
                  nUR                  nUR                  nUR
                  nO[        X5      u  pn[        X5      u  nnnSn[        X-   X55      nUR                  US   US   5        UR                  XXSS9nUR                  UUS	S
S9  UR!                  5         U$ )N)xlabelylabelNonelogcategoricalr   r"   grey)cr6   
edgecolorsz#cccccczInfeasible Trial)rG   label)set
param_namer	   zipxytrial_numbersconstraintsappendis_log
set_xscaleis_numerical_get_categorical_plot_values_calc_lim_with_paddingset_xlimscatterlabel_outer)subplot_infor&   r6   r7   r   scalefeasible
infeasiblerM   rN   numrG   
feasible_x
feasible_y
feasible_cinfeasible_xinfeasible_yr5   xlimr:   s                       r   r.   r.   l   s    FF,))+F>E2r2&HRR(J(B(BLD\D\c =AK1=AK

!!!$

!!!$&&--c2##A&##A&((//4 
e  ZZ
ZZ
++
!||!||-I,-a*

(D\(^%lA!*";]RDKKQa!	JjPV	WBJJ|\Y>PJQNNIr   c                   U R                   c   e/ n/ n/ n[        [        5      n[        UR                  UR
                  UR                  5       H  u  pgnXV   R                  Xx45        M     U R                    HL  n	XY    HA  u  pxUR                  [        U	5      5        UR                  U5        UR                  U5        MC     MN     X#U4$ N)	x_labelsr   listrL   rM   rN   rO   rQ   str)
rZ   valuesvalue_xvalue_yvalue_cpoints_dictrM   rN   numberx_labels
             r   rU   rU      s       ,,,GGGd#KFHHfhh0D0DEfqk* F(($-IANN3w<(NN1NN6" . )
 W$$r   c                   [        U 5      n[        U 5      nUS:X  a  [        R                  " U5      [        R                  " U5      -
  U-  n[        R                  " S[        R                  " U5      U-
  5      [        R                  " S[        R                  " U5      U-   5      4$ US:X  a"  [        [        U 5      5      S-
  nXa-  nU* Xe-   4$ X4-
  U-  nXE-
  X5-   4$ )NrD   
   rE   r"   )maxminmathlog10powr(   rJ   )rj   r7   r[   	value_max	value_minpaddingwidths          r   rV   rV      s     FIFI~::i(4::i+@@MQHHRI.89HHRI.89
 	
 
-	CK 1$'x(((M9"I$777r   rf   )
r   r   r   zlist[str] | Noner   z%Callable[[FrozenTrial], float] | Noner   ri   return'Axes')r4   r
   r|   r}   )rZ   r   r&   r}   r6   z
'Colormap'r7   floatr   ri   r|   z'PathCollection')rZ   r   rj   r	   r|   z(tuple[list[Any], list[float], list[int]])rj   z	list[Any]r7   r~   r[   z
str | Noner|   ztuple[float, float])"
__future__r   collectionsr   ru   typingr   r   optuna._experimentalr   optuna.visualization._slicer   r	   r
   r   3optuna.visualization.matplotlib._matplotlib_importsr   collections.abcr   optuna.studyr   optuna.trialr   is_successfulr   r   r   r   r   r   r   r.   rU   rV    r   r   <module>r      s<   " #     2 < 3 6 9 H ("( HLNRG 7  $ U 59( U U U 2	 U
  U  U  UF&R+#++ + 	+
 + +\%#%-8%-%$88&+84>88r   