L i3ddlmZddlmZddlmZddlZddlmZddl m Z ddl m Z ddl mZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZe 5ZddlZdddej2rddlmZddlmZddlmZddlmZdZed d"ddd d#dZd$dZ d%dZ!GddZ" d&dZ# d'dZ$d(dZ% d)dZ& d*d Z'd+d!Z(y#1swYxYw),) annotations)Callable)SequenceN)experimental_func) try_import)Study) FrozenTrial) _AxisInfo) _ContourInfo)_get_contour_info) _PlotValues)_SubContourInfo)_imports)Axes)Colormap) ContourSet)pltdz2.2.0zObjective Value)target target_namec\tjt||||}t|S)aePlot the parameter relationship as contour plot in a study with Matplotlib. Note that, if a parameter contains missing values, a trial with missing values is not plotted. .. seealso:: Please refer to :func:`optuna.visualization.plot_contour` 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 color bar. Returns: A :class:`matplotlib.axes.Axes` object. .. note:: The colormap is reversed when the ``target`` argument isn't :obj:`None` or ``direction`` of :class:`~optuna.study.Study` is ``minimize``. )rcheckr _get_contour_plot)studyparamsrrinfos n/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/optuna/visualization/matplotlib/_contour.py plot_contourr!s*J NN UFFK @D T ""c|j}|j}|j}|j}t |dkrt j \}}|St |}t jjd|dk(rzt j \}} | jdt|} t|dd| | } t| tr"|j| } | j|| St j ||\}} t| t j"sJ|j%dt|} g} t't |D]W}t't |D]>}| ||f}t||||| } t| ts.| j)| @Y| r'|j| d| } | j|| S)Nggplotz Contour Plotr)ax) sorted_paramssub_plot_infos reverse_scalerlenrsubplotsstyleuse set_title _set_cmap_generate_contour_subplot isinstancercolorbar set_labelnpndarraysuptitlerangeappend)rr%r&r'r_r$n_paramsfigaxscmapcsaxcbcs_listx_iy_is rrrKs&&M((N&&M""K =Q 2 =!HIIMM(1}<<>S n%' &~a'8';S$ G b* %<<#D NN; '( J#<<(3S#rzz*** ^$']+, 'CS/0 'c].~c/B3/GTRb*-NN2&  ' ' << s<3D NN; ' Jrc8|sdnd}tj|S)NBlues_rBlues)rget_cmap)r'r;s rr-r-ws)9wD << rc<eZdZddZd dZd dZd dZd dZd dZy) _LabelEncodercg|_yNlabelsselfs r__init__z_LabelEncoder.__init__}s !# rc8tt||_|SrH)sortedsetrJrLrJs rfitz_LabelEncoder.fitsS[)  rc^|Dcgc]}|jj|c}Scc}wrH)rJindex)rLrJlabels r transformz_LabelEncoder.transforms%6<=U !!%(===s"*cB|j|j|SrH)rRrVrQs r fit_transformz_LabelEncoder.fit_transformsxx))&11rc|jSrHrIrKs r get_labelsz_LabelEncoder.get_labelss {{rcPttt|jSrH)listr5r(rJrKs r get_indicesz_LabelEncoder.get_indicessE#dkk*+,,rN)returnNone)rJ list[str]r^z'_LabelEncoder')rJr`r^ list[int])r^r`)r^ra) __name__ __module__ __qualname__rMrRrVrXrZr]rrrFrF|s $>2-rrFcg}g}t|j|jD]-\}}| | |j||j|/||fSrH)zipvaluesr6)xaxisyaxisx_valuesy_valuesx_valuey_values r_filter_missing_valuesrosaHH ell;%  7#6 OOG $ OOG $% X rc g}g}|jrt}|jtt t t d|j|jtt t |}|j}|j}ntt d|}|jr\tjtj|jdtj|jdt }n5tj"|jd|jdt }|||t|fS)Nc |duSrHre)values rz&_calculate_axis_data..s 53Drct|SrH)float)xs rrsz&_calculate_axis_data..s U1Xrrr!)is_catrFrRr\mapstrfilterrhrVrZr]is_logr2logspacelog10r5CONTOUR_POINT_NUMlinspace)axisrhcat_param_labels cat_param_posencreturned_valuescis r_calculate_axis_datars #%!M {{o Sf%DdkkRSTU--Sf-=(>?>>+) s#5v>? {{ [[$**Q-0"((4::a=2IK\ ] [[A 1 7H I _0E EErcT|j}|j}|j}g}g}g}t|j|jD]y\}}| | |j ||j ||j j|} |j j|} |j || | f{t|dk(st|dk(r,tjgtggtggfSt||\} } } }t||\}}}}tjg}|j|jk7rt|||| |}t|t }tgg}tgg}t|||j"D]u\}}}|r7|j$j ||j&j |@|j$j ||j&j |w|||fS)Nr)rirjz_valuesrgrhr6indicesrTr(r2arrayr rname _create_zmap_interpolate_zmapr~ constraintsrvy)rrirj z_values_dictrkrlrrmrnr?r@xicat_param_labels_xcat_param_pos_xtransformed_x_valuesyicat_param_labels_ycat_param_pos_ytransformed_y_valueszizmapfeasible infeasiblecs r_calculate_griddatars JJE JJEMMMHHH ell;7  7#6 OOG $ OOG $--%%g.C--%%g.C OOM3*5 6 7 8}S]a/xx|[R0+b"2EEEDX EABO-AEY EABO-A XXb\B zzUZZ02FRTVXY t%6 72r"HR$J"#79MtO_O_`)! JJ  g & JJ  g & LL   ( LL   ( ) x ##rc D|jt|jjdks"t|jjdkry|j |jj |jj |j|jjd|jjd|j|jjd|jjdt|j|j\}}t|j|\}}}}t|j|\} } } }|jjr#|j||j|n)|j|jj rdnd|jjr#|j#| |j%| n)|j'|jj rdnd|jj |jj k(ryt)|\} } }d}t| dkDr|j+|| | ddd |j-|| | d|j/ }t1|t2sJ|j5| j6| j8d d ddd|j5|j6|j8d dddd|S)Nr#)xlabelylabelrr!loglinearg?k) linewidthscolors)r;oblackgreyg@)markerrs edgecolors linewidthz#cccccc) label_outerr(rirrjrPrset_xlimr5set_ylimrorrw set_xticksset_xticklabels set_xscaler{ set_yticksset_yticklabels set_yscalercontourcontourfreversedr/rscatterrvr)rr$r;rkrlrx_cat_param_labelx_cat_param_posr7ry_cat_param_labely_cat_param_posrfeasible_plot_valuesinfeasible_plot_valuesr<s rr.r.szNN 4::  "c$***<*<&=&AFF$**//$**//F:KK   #TZZ%5%5a%89KK   #TZZ%5%5a%89/ DJJGHh0DTZZQY0Z-B?A0DTZZQY0Z-B?A zz o& ,- tzz00eh? zz o& ,- tzz00eh? zz$**//)7J47P4B4 B 2w{ 2r2rc# > [[RRdmmo[ >"j))) " " " "   " $ $ " $ $   Irc $t}t|||D]u\}}}ttjtj ||z } ttjtj ||z } ||| | f<w|SrH)dictrgintr2argminabs) rkrlrrrrrvrzxindexyindexs rrr)s}" 6Dx84#1aRYYrvvb1f~./RYYrvvb1f~./!"ff # Krc g}g}g}tj|dz}t|D]}t|D]}||z|z}||f|vr>|jd|j||j||||f||<OdD]\} } d|| zcxkr|ksnd|| zcxkr|ks'n*|jd|j||j||jd|j||j|| |zz| ztj j jtj j|||ff|} | j||fS)Nr#r!))r)r!r)rr)rr!rr) r2zerosr5r6scipysparselinalgspsolve csc_matrixreshape) rcontour_plot_numa_dataa_rowa_colbrvr grid_indexdxdyrs rrrCs"F E E !1$%A # $N'( NA--1J1v~ a  Z( Z( $aV * @NFBAF5%55!q2v:XHX:X a( Z0 Z0 b) Z0 Z"7G2G%G"%LMN NN$  ##ELL$;$;VeU^rs"$$2&$36;59H\_8HLNG7 $&#59( &# &# &# 2 &#  &#  &#&#R)X --*   & 0 F F !F@F<1$h7 7%7-777t##     " 4);_ s C;;D