Ë
    {�h*A  ã                   ó   — d dl mZ d dlmZ d dlmZmZ d dlmc m	Z
 d dlZd„ Zd„ Zd„ Zd„ Z	 	 	 	 	 	 	 	 	 dd	„Zdd
„Zddddddddi i ddddddddddddddfd„Z ee eddgg d¢g d¢ddgddg¬«      ¬«      e_        y)é    )Úbuild_dataframe)Úmake_docstring)Úchoropleth_mapboxÚscatter_mapboxNc                 ó®   — |t         j                  z  dz  }t        j                  t        j                  | t         j                  z  dz  «      «      }||fS )zU
    Projects lat and lon to WGS84, used to get regular hexagons on a mapbox map
    é´   )ÚnpÚpiÚarctanhÚsin)ÚlatÚlonÚxÚys       úb/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/plotly/figure_factory/_hexbin_mapbox.pyÚ_project_latlon_to_wgs84r      sC   € ð 	Œb�e‰e‰�cÑ€AÜ
�
‰
”2—6‘6˜#¤§¡™+¨Ñ+Ó,Ó-€AØˆaˆ4€Kó    c                 óÜ   — | dz  t         j                  z  }dt        j                  t        j                  |«      «      z  t         j                  dz  z
  dz  t         j                  z  }||fS )zU
    Projects WGS84 to lat and lon, used to get regular hexagons on a mapbox map
    r   é   )r	   r
   ÚarctanÚexp)r   r   r   r   s       r   Ú_project_wgs84_to_latlonr      sT   € ð ˆc‰'”B—E‘E‰/€CØŒr�y‰yœŸ™ ›Ó#Ñ#¤b§e¡e¨a¡iÑ/°3Ñ
6¼¿¹Ñ
>€CØ�ˆ8€Or   c                 óò   — d}d|z  d|z  dœ}d}d„ }d„ }	 ||«       ||«      z
  t         j                  z  }
|| z
  }|dk  r|dz   n|dz  } |	|d	   |d	   |
«      } |	|d
   |d
   |«      }t        |||«      S )zÁ
    Get the mapbox zoom level given bounds and a figure dimension
    Source: https://stackoverflow.com/questions/6048975/google-maps-v3-how-to-calculate-the-zoom-level-for-a-given-bounds
    r   é   ©ÚheightÚwidthé   c                 ó  — t        j                  | t         j                  z  dz  «      }t        j                  d|z   d|z
  z  «      dz  }t	        t        |t         j                  «      t         j                   «      dz  S )Nr   é   r   )r	   r   r
   ÚlogÚmaxÚmin)r   r   ÚradX2s      r   ÚlatRadz#_getBoundsZoomLevel.<locals>.latRad&   s`   € Ü�f‰f�Sœ2Ÿ5™5‘[ 3Ñ&Ó'ˆÜ—‘˜˜C™ A¨¡GÑ,Ó-°Ñ1ˆÜ”3�uœbŸe™eÓ$¤r§u¡u fÓ-°Ñ1Ð1r   c                 ój   — dt        j                  | |z  |z  «      z  t        j                  d«      z  S )Ngffffffî?r   )r	   r!   )ÚmapPxÚworldPxÚfractions      r   Úzoomz!_getBoundsZoomLevel.<locals>.zoom+   s,   € Ø”b—f‘f˜U W™_¨xÑ7Ó8Ñ8¼2¿6¹6À!»9ÑDÐDr   r   ih  r   r   )r	   r
   r#   )Úlon_minÚlon_maxÚlat_minÚlat_maxÚmapDimÚscaleÚ	WORLD_DIMÚZOOM_MAXr%   r*   ÚlatFractionÚlngDiffÚlngFractionÚlatZoomÚlngZooms                  r   Ú_getBoundsZoomLevelr8      s«   € ð 	
ð 
ð  ™;°°u±Ñ=€IØ€Hò2ò
Eñ ˜'“?¡V¨G£_Ñ4¼¿¹Ñ=€Kà˜Ñ€GØ&-°¢k�G˜c’M°wÀ#ÑE€Ká�6˜(Ñ# Y¨xÑ%8¸+ÓF€GÙ�6˜'‘? I¨gÑ$6¸ÓD€Gäˆw˜ Ó*Ð*r   c           
      óP  — |j                  «       }|j                  «       }	|j                  «       }
|j                  «       }d|	|z
  z  }||z  }|	|z  }	|	|z
  }||
z
  }|dk(  r|dkD  r||z  }n|dk(  r|dk(  rt        dd«      \  }}n||z  }|t        j                  d«      z  }t        j
                  ||z  «      j                  t        «      }|
|
||z  z   |z
  dz  z  }
| |z
  |z  } ||
z
  |z  }t        j                  | «      j                  t        «      }t        j                  |«      j                  t        «      }t        j                  | «      j                  t        «      }t        j                  |«      j                  t        «      }|dz   }|dz   }|}|}||z  ||z  z   }| |z
  dz  d||z
  dz  z  z   }| |z
  dz
  dz  d||z
  dz
  dz  z  z   }||k  }|�€.t        j                  ||f«      }t        j                  ||f«      } d|k  ||k  z  d|k  z  ||k  z  |z  }!d|k  ||k  z  d|k  z  ||k  z  | z  }"t        j                  j                  |||!   ||!   fd«       t        j                  j                  | ||"   ||"   fd«       |�,t        j                  |||k  <   t        j                  | | |k  <   t        j                  |j                  «       | j                  «       g«      }#t        j                   |#«       }$�nP|€d}t        j"                  ||ft$        ¬	«      }t'        |«      D ]  }%t'        |«      D ]	  }&g ||%|&f<   Œ Œ t        j"                  ||ft$        ¬	«      } t'        |«      D ]  }%t'        |«      D ]	  }&g | |%|&f<   Œ Œ t'        t)        | «      «      D ]Ž  }%||%   rDd||%   cxk  r|k  sŒn Œd||%   cxk  r|k  sŒ)n Œ,|||%   ||%   f   j+                  ||%   «       ŒLd||%   cxk  r|k  sŒ[n Œ^d||%   cxk  r|k  sŒmn Œp| ||%   ||%   f   j+                  ||%   «       Œ� t'        |«      D ]J  }%t'        |«      D ]:  }&||%|&f   }'t)        |'«      |k\  r ||'«      ||%|&f<   Œ&t        j                  ||%|&f<   Œ< ŒL t'        |«      D ]J  }%t'        |«      D ]:  }&| |%|&f   }'t)        |'«      |k\  r ||'«      | |%|&f<   Œ&t        j                  | |%|&f<   Œ< ŒL t        j,                  |j                  t.        «      j                  «       | j                  t.        «      j                  «       f«      }#t        j                   |#«       }$|#|$   }(t        j                  |dft.        «      })t        j0                  t        j2                  |«      |«      |)d||z  …df<   t        j4                  t        j2                  |«      |«      |)d||z  …df<   t        j0                  t        j2                  |«      dz   |«      |)||z  d…df<   t        j4                  t        j2                  |«      |«      dz   |)||z  d…df<   |)dd…dfxx   |z  cc<   |)dd…dfxx   |z  cc<   |)dd…dfxx   |z  cc<   |)dd…dfxx   |
z  cc<   |)|$   })g d
¢}*dt        j6                  t        j8                  dz  «      z  dt        j:                  t        j8                  dz  «      z  dt        j:                  t        j8                  dz  «      z  dt        j6                  t        j8                  dz  «      z  dt        j:                  t        j8                  dz  «      z  dt        j:                  t        j8                  dz  «      z  g}+t)        |)«      },t        j<                  |*g|,z  «      |z  t        j>                  |)dd…df   «      z   }-t        j<                  |+g|,z  «      |z  t        j                  d«      z  t        j>                  |)dd…df   «      z   }.|-|.|)|(fS )aQ  
    Computes the aggregation at hexagonal bin level.
    Also defines the coordinates of the hexagons for plotting.
    The binning is inspired by matplotlib's implementation.

    Parameters
    ----------
    x : np.ndarray
        Array of x values (shape N)
    y : np.ndarray
        Array of y values (shape N)
    x_range : np.ndarray
        Min and max x (shape 2)
    y_range : np.ndarray
        Min and max y (shape 2)
    color : np.ndarray
        Metric to aggregate at hexagon level (shape N)
    nx : int
        Number of hexagons horizontally
    agg_func : function
        Numpy compatible aggregator, this function must take a one-dimensional
        np.ndarray as input and output a scalar
    min_count : int
        Minimum number of points in the hexagon for the hexagon to be displayed

    Returns
    -------
    np.ndarray
        X coordinates of each hexagon (shape M x 6)
    np.ndarray
        Y coordinates of each hexagon (shape M x 6)
    np.ndarray
        Centers of the hexagons (shape M x 2)
    np.ndarray
        Aggregated value in each hexagon (shape M)

    g•Ö&è.>r   r    é   r   g      @ç      à?N)Údtype)r   r;   r;   r   ç      à¿r=   r=   é   ) r#   r"   r   r	   ÚsqrtÚceilÚastypeÚintÚroundÚfloorÚzerosÚaddÚatÚnanÚconcatenateÚravelÚisnanÚemptyÚobjectÚrangeÚlenÚappendÚhstackÚfloatÚrepeatÚarangeÚtileÚcosr
   ÚtanÚarrayÚvstack)/r   r   Úx_rangeÚy_rangeÚcolorÚnxÚagg_funcÚ	min_countÚxminÚxmaxÚyminÚymaxÚpaddingÚDxÚDyÚdxÚ_ÚdyÚnyÚix1Úiy1Úix2Úiy2Únx1Úny1Únx2Úny2ÚnÚd1Úd2ÚbdistÚlattice1Úlattice2Úc1Úc2ÚaccumÚ	good_idxsÚiÚjÚvalsÚagreggated_valueÚcentersÚhxÚhyÚmÚhxsÚhyss/                                                  r   Ú_compute_hexbinr‡   9   s¢  € ðL �;‰;‹=€DØ�;‰;‹=€DØ�;‰;‹=€DØ�;‰;‹=€Dð ˜˜t™Ñ$€GØˆG�O€DØˆG�O€Dà	�‰€BØ	�‰€BØ	ˆQ‚w�2˜’6Ø�"‰W‰Ø	ˆqŠ�R˜1’WÜ(¨¨AÓ.‰ˆ‰Aà�"‰WˆØ	Œb�g‰g�a‹j‰€BÜ	�‰��b‘Ó	×	 Ñ	 ¤Ó	%€Bð 	ˆT�B˜‘G‰^˜dÑ" aÑ'Ñ'€Dà	
ˆT‰�R‰€AØ	
ˆT‰�R‰€AÜ
�(‰(�1‹+×
Ñ
œSÓ
!€CÜ
�(‰(�1‹+×
Ñ
œSÓ
!€CÜ
�(‰(�1‹+×
Ñ
œSÓ
!€CÜ
�(‰(�1‹+×
Ñ
œSÓ
!€Cà
ˆq‰&€CØ
ˆq‰&€CØ
€CØ
€CØˆc‰	�C˜#‘IÑ€Aà
ˆc‰'�a‰˜#  S¡¨Q¡Ñ.Ñ	.€BØ
ˆc‰'�C‰-˜AÑ	  q¨3¡w°¡}¸Ñ&:Ñ :Ñ	:€BØ�‰G€Eà�}Ü—8‘8˜S #˜JÓ'ˆÜ—8‘8˜S #˜JÓ'ˆØ�3‰h˜3 ™9Ñ%¨¨c©Ñ2°c¸C±iÑ@À5ÑHˆØ�3‰h˜3 ™9Ñ%¨¨c©Ñ2°c¸C±iÑ@ÀEÀ6ÑIˆÜ
�‰�	‰	�(˜S ™W c¨"¡gÐ.°Ô2Ü
�‰�	‰	�(˜S ™W c¨"¡gÐ.°Ô2ØÐ Ü-/¯V©VˆH�X 	Ñ)Ñ*Ü-/¯V©VˆH�X 	Ñ)Ñ*Ü—‘ §¡Ó 0°(·.±.Ó2BÐCÓDˆÜ—X‘X˜e“_Ð$Š	àÐØˆIô —8‘8˜S #˜J¬fÔ5ˆÜ�s“ò 	$ˆAÜ˜3“Zò $�Ø!#�˜˜A˜’ñ$ð	$ô —8‘8˜S #˜J¬fÔ5ˆÜ�s“ò 	$ˆAÜ˜3“Zò $�Ø!#�˜˜A˜’ñ$ð	$ô ”s˜1“v“ò 	>ˆAØ�QŠxØ˜˜A™Ô$ Ö$¨¨c°!©fÔ):°sÖ):Ø˜S ™V S¨¡V˜^Ñ,×3Ñ3°E¸!±HÕ=à˜˜A™Ô$ Ö$¨¨c°!©fÔ):°sÖ):Ø˜S ™V S¨¡V˜^Ñ,×3Ñ3°E¸!±HÕ=ð	>ô �s“ò 	,ˆAÜ˜3“Zò ,�Ø  1 ‘~�Ü�t“9 	Ò)Ù%-¨d£^�H˜Q ˜T’Nä%'§V¡V�H˜Q ˜T’Nñ,ð	,ô �s“ò 	,ˆAÜ˜3“Zò ,�Ø  1 ‘~�Ü�t“9 	Ò)Ù%-¨d£^�H˜Q ˜T’Nä%'§V¡V�H˜Q ˜T’Nñ,ð	,ô —	‘	Ø�_‰_œUÓ#×)Ñ)Ó+¨X¯_©_¼UÓ-C×-IÑ-IÓ-KÐLó
ˆô —X‘X˜e“_Ð$ˆ	à˜YÑ'Ðä�h‰h˜˜1�vœuÓ%€GÜ Ÿi™i¬¯	©	°#«¸Ó<€GˆKˆc�C‰iˆK˜ˆNÑÜ Ÿg™g¤b§i¡i°£n°cÓ:€GˆKˆc�C‰iˆK˜ˆNÑÜ Ÿi™i¬¯	©	°#«¸Ñ(<¸cÓB€GˆC�#‰I‰K˜ˆNÑÜ Ÿg™g¤b§i¡i°£n°cÓ:¸SÑ@€GˆC�#‰I‰K˜ˆNÑØŠAˆqˆDƒM�RÑƒMØŠAˆqˆDƒM�RÑƒMØŠAˆqˆDƒM�TÑƒMØŠAˆqˆDƒM�TÑƒMØ�iÑ €Gò 
&€BàŒr�v‰v”b—e‘e˜a‘iÓ Ñ ØŒr�v‰v”b—e‘e˜a‘iÓ Ñ ØŒb�f‰f”R—U‘U˜Q‘YÓÑØŒb�f‰f”R—U‘U˜Q‘YÓÑØŒb�f‰f”R—U‘U˜Q‘YÓÑØŒr�v‰v”b—e‘e˜a‘iÓ Ñ ð
€Bô 	ˆG‹€Aô �(‰(�B�4˜!‘8Ó
˜rÑ
!¤B§I¡I¨g²a¸°d©mÓ$<Ñ
<€CÜ
�(‰(�B�4˜!‘8Ó
˜rÑ
!¤B§G¡G¨A£JÑ
.´·±¸7Â1ÀaÀ4¹=Ó1IÑ
I€Cà��WÐ.Ð.Ð.r   c	           
      óœ  — t        | |«      \  }	}
|€3t        j                  | j                  «       | j	                  «       g«      }|€3t        j                  |j                  «       |j	                  «       g«      }t        ||«      \  }}t        |	|
||||||«      \  }}}}t        ||«      \  }}|j                  t        «      }t        j                  |dd…df   |dd…df   dœ|¬«      j                  t        j                  t        j                  d«      t        j                  d«      gd¬	«      ¬
«      j                  d«      }||||fS )a�  
    Computes the lat-lon aggregation at hexagonal bin level.
    Latitude and longitude need to be projected to WGS84 before aggregating
    in order to display regular hexagons on the map.

    Parameters
    ----------
    lat : np.ndarray
        Array of latitudes (shape N)
    lon : np.ndarray
        Array of longitudes (shape N)
    lat_range : np.ndarray
        Min and max latitudes (shape 2)
    lon_range : np.ndarray
        Min and max longitudes (shape 2)
    color : np.ndarray
        Metric to aggregate at hexagon level (shape N)
    nx : int
        Number of hexagons horizontally
    agg_func : function
        Numpy compatible aggregator, this function must take a one-dimensional
        np.ndarray as input and output a scalar
    min_count : int
        Minimum number of points in the hexagon for the hexagon to be displayed

    Returns
    -------
    np.ndarray
        Lat coordinates of each hexagon (shape M x 6)
    np.ndarray
        Lon coordinates of each hexagon (shape M x 6)
    nw.Series
        Unique id for each hexagon, to be used in the geojson data (shape M)
    np.ndarray
        Aggregated value in each hexagon (shape M)

    Nr   r    )Úx1Úx2©Únative_namespacer‰   rŠ   ú,)Ú	separator)Úhexagons_idsr�   )r   r	   rX   r#   r"   r‡   r   rA   ÚstrÚnwÚ	from_dictÚselectÚ
concat_strÚcolÚ
get_column)r   r   Ú	lat_rangeÚ	lon_ranger\   r]   r^   r_   rŒ   r   r   rZ   r[   r…   r†   r�   r€   Úhexagons_latsÚhexagons_lonsr�   s                       r   Ú_compute_wgs84_hexbinr›   á   s/  € ôb $ C¨Ó-�D€A€qàÐÜ—H‘H˜cŸg™g›i¨¯©«Ð3Ó4ˆ	ØÐÜ—H‘H˜cŸg™g›i¨¯©«Ð3Ó4ˆ	ä/°	¸9ÓEÑ€GˆWä*9Ø	ˆ1ˆg�w  r¨8°Yó+Ñ'€CˆˆgÐ'ô
 $<¸CÀÓ#EÑ €M�=ð �n‰nœSÓ!€Gä
�‰Øš1˜a˜4‘=¨²°1°©Ñ6Ø-ô	
÷ 
‰œRŸ]™]¬B¯F©F°4«L¼"¿&¹&À»,Ð+GÐSVÔWˆÓ	Xß	‰�NÓ	#ð ð ˜-¨Ð7GÐGÐGr   c                 ód  — g }|€t        j                  t        | «      «      }t        | ||«      D ]r  \  }}}t        j                  ||g«      j
                  j                  «       }|j                  |d   «       |j                  t        d|t        d|g¬«      ¬«      «       Œt t        d|¬«      S )zc
    Creates a geojson of hexagonal features based on the outputs of
    _compute_wgs84_hexbin
    r   ÚFeatureÚPolygon)ÚtypeÚcoordinates)rŸ   ÚidÚgeometryÚFeatureCollection)rŸ   Úfeatures)	r	   rT   rO   ÚziprX   ÚTÚtolistrP   Údict)r™   rš   Úidsr¤   r   r   ÚidxÚpointss           r   Ú_hexagons_to_geojsonr¬   0  s¦   € ð
 €HØ
€{Ü�i‰iœ˜MÓ*Ó+ˆÜ˜]¨M¸3Ó?ò 	
‰ˆˆS�#Ü—‘˜3 ˜*Ó%×'Ñ'×.Ñ.Ó0ˆØ�‰�f˜Q‘iÔ Ø�‰ÜØØÜ 9¸6¸(ÔCôõ	
ð	
ô Ð(°8Ô<Ð<r   é   Fc                 ó~  — t        t        «       d¬«      }t        j                  |d   «      }|€t        j
                  }|d   j                  t        j                  |d   «      j                  j                  d«      t        j                  |d   «      j                  j                  d«      «      j                  «       j                  «       }|d   j                  t        j                  |d   «      j                  j                  d«      t        j                  |d   «      j                  j                  d«      «      j                  «       j                  «       }t        |d   j                  |d   «      j                  «       |d   j                  |d   «      j                  «       ||d||||¬«	      \  }}}}t        |||«      } |€^|€|€t!        d	d	¬
«      }!n1|€|�t!        d	|¬
«      }!n|�|€t!        ||¬
«      }!nt!        ||¬
«      }!t#        |d   |d   |d   |d   |!«      }|€)t!        |j                  «       |j                  «       ¬«      }|d   �1t!        |d   j%                  |d   d¬«      j'                  «       «      }"nd|d   i}"g }#|"j)                  «       D ]¿  \  }$}%t        |%j                  |d   «      j                  «       |%j                  |d   «      j                  «       |||d   r"|%j                  |d   «      j                  «       nd||||¬«	      \  }&}&}}'|#j+                  t        j,                  |$d   gt/        |«      z  ||'dœ|¬«      «       ŒÁ t        j0                  |#d¬«      j3                  t        j4                  d«      j7                  t        j8                  «      ¬«      }(|€&|(d   j                  «       |(d   j                  «       g}t;        d/i d|(j=                  «       “d| “dd“dd“dddddœ“d|d   �dnd“d|“d|“d |	“d!|
“d"|“d#|“d$|“d%|“d&|“d'|“d(|“d)|“d*|“d+|“Ž})|�rwt?        |d   �|d   jA                  |d   dd¬,«      n|d   j=                  «       |d   |d   |d   ¬-«      }*d.|*jB                  d   _"        d|*jB                  d   _#        ||*jB                  d   _$        |)jK                  |*jB                  d   «       |d   �ÐtM        t/        |*jN                  «      «      D ]¯  }+d.|*jN                  |+   jB                  d   _"        d|*jN                  |+   jB                  d   _#        ||*jN                  |+   jB                  d   _$        |)jN                  |+   jB                  d   |*jN                  |+   jB                  d   g|)jN                  |+   _!        Œ± |)S )0zO
    Returns a figure aggregating scattered points into connected hexagons
    N)ÚargsÚconstructorÚ
data_framer   Ú_minÚ_maxr   )	r   r   r—   r˜   r\   r]   r^   r_   rŒ   iÂ  r   r   r    )r   r   Úanimation_frameT)Údrop_null_keys)r   r\   )ÚframeÚ	locationsr\   r‹   Úvertical)Úhow)r\   Úgeojsonr·   Ú
hover_dataF)r\   r·   r¶   r¶   Úcolor_discrete_sequenceÚcolor_discrete_mapÚlabelsÚcolor_continuous_scaleÚrange_colorÚcolor_continuous_midpointÚopacityr*   ÚcenterÚmapbox_styleÚtitleÚtemplater   r   )ÚbyÚ
descendingÚ
nulls_last)r±   r   r   r´   Úskip© )(r   Úlocalsr‘   Úget_native_namespacer	   Úmeanr“   r#   ÚnameÚsuffixr"   Úto_numpyÚsqueezer›   r–   r¬   r¨   r8   Úgroup_byÚ__iter__ÚitemsrP   r’   rO   ÚconcatÚwith_columnsr•   ÚcastÚInt64r   Ú	to_nativer   ÚsortÚdataÚ	hoverinfoÚhovertemplateÚmarkerÚ	add_tracerN   Úframes),r±   r   r   r\   Ú
nx_hexagonr^   r´   r¼   r½   r¾   r¿   rÀ   rÁ   rÂ   r*   rÃ   rÄ   rÅ   rÆ   r   r   r_   Úshow_original_dataÚoriginal_data_markerr¯   rŒ   r—   r˜   r™   rš   r�   Úcountrº   r/   ÚgroupsÚagg_data_frame_listÚkeyÚdfrh   Úaggregated_valueÚagg_data_frameÚfigÚoriginal_figr}   s,                                               r   Úcreate_hexbin_mapboxrî   E  s'  € ô: ¤£°dÔ;€DÜ×.Ñ.¨t°LÑ/AÓBÐØÐÜ—7‘7ˆð 	ˆ\Ñß	‰Ü�F‰F�4˜‘;Ó×$Ñ$×+Ñ+¨FÓ3Ü�F‰F�4˜‘;Ó×$Ñ$×+Ñ+¨FÓ3ó

÷ 
‰‹ß	‰‹ð ð 	ˆ\Ñß	‰Ü�F‰F�4˜‘;Ó×$Ñ$×+Ñ+¨FÓ3Ü�F‰F�4˜‘;Ó×$Ñ$×+Ñ+¨FÓ3ó

÷ 
‰‹ß	‰‹ð ô 9NØ�Ñ×)Ñ)¨$¨u©+Ó6×?Ñ?ÓAØ�Ñ×)Ñ)¨$¨u©+Ó6×?Ñ?ÓAØØØØØØØ)ô
9Ñ5€M�= ,°ô # =°-ÀÓN€Gà€|Øˆ>˜e˜mÜ ¨CÔ0‰FØˆ^ Ð 1Ü ¨EÔ2‰FØÐ E MÜ ¨vÔ6‰Fä ¨uÔ5ˆFÜ"Ø�a‰L˜) A™,¨	°!©°iÀ±lÀFó
ˆð €~Ü˜)Ÿ.™.Ó*°	·±Ó0@ÔAˆàÐÑÐ*ÜØ�Ñß‰X�dÐ,Ñ-¸dˆXÓCß‰X‹Zó
‰ð ˜˜\Ñ*Ð+ˆàÐØ—<‘<“>ò 
‰ˆˆRÜ/DØ—‘˜d 5™kÓ*×3Ñ3Ó5Ø—‘˜d 5™kÓ*×3Ñ3Ó5ØØØ=AÀ'º]�"—-‘-  W¡Ó.×7Ñ7Ô9ÐPTØØØØ-ô
0
Ñ,ˆˆ1ˆlÐ,ð 	×"Ñ"Ü�L‰Là! !™f˜X¬¨LÓ(9Ñ9Ø!-Ø-ñð
 "2ôõ		
ð
ô. —Y‘YÐ2¸
ÔC×PÑPÜ�f‰f�W‹o×"Ñ"¤2§8¡8Ó,ð Qó €Nð ÐØ% gÑ.×2Ñ2Ó4°nÀWÑ6M×6QÑ6QÓ6SÐTˆä
ò Ø!×+Ñ+Ô-ðáðñ ðñ ð	ð
 "°ÀÒFðð %)Ð):Ñ$;Ð$G™ÈTøðñ !8ðñ .ðñ ðñ  6ðñ  ðñ #<ðñ ðñ ðñ ðñ  "ð!ñ" ð#ñ$ ð%ñ& ð'ñ( ð)€Cò. Ü%ð
 Ð)Ñ*Ð6ð �\Ñ"×'Ñ'ØÐ-Ñ.¸5ÈTð (ô ð ˜,Ñ'ß‰i‹kØ�U‘Ø�U‘Ø Ð!2Ñ3ô
ˆð *0ˆ×Ñ˜!ÑÔ&Ø-1ˆ×Ñ˜!ÑÔ*Ø&:ˆ×Ñ˜!ÑÔ#à�‰�l×'Ñ'¨Ñ*Ô+àÐ!Ñ"Ð.Üœ3˜|×2Ñ2Ó3Ó4ò �Ø;A�×#Ñ# AÑ&×+Ñ+¨AÑ.Ô8Ø?C�×#Ñ# AÑ&×+Ñ+¨AÑ.Ô<Ø8L�×#Ñ# AÑ&×+Ñ+¨AÑ.Ô5ð —J‘J˜q‘M×&Ñ& qÑ)Ø ×'Ñ'¨Ñ*×/Ñ/°Ñ2ð&�—
‘
˜1‘Õ"ðð €Jr   rB   z/Number of hexagons (horizontally) to be created)Úfunctionz8Numpy array aggregator, it must take as input a 1D arrayzand output a scalar value.)rB   z=Minimum number of points in a hexagon for it to be displayed.z3If None and color is not set, display all hexagons.zDIf None and color is set, only display hexagons that contain points.ÚboolzCWhether to show the original data on top of the hexbin aggregation.r¨   zScattermapbox marker options.)râ   r^   r_   rã   rä   )Úoverride_dict)	NNNNNNNNN)N)Úplotly.express._corer   Úplotly.express._docr   Úplotly.express._chart_typesr   r   Únarwhals.stable.v1ÚstableÚv1r‘   Únumpyr	   r   r   r8   r‡   r›   r¬   rî   r¨   Ú__doc__rË   r   r   ú<module>rú      sî   ðÝ 0Ý .ß Iß Ð Û òòò+ò>e/ðR 	ØØØØ
ØØØØóLHó^=ð, ØØØ
ØØØØ ØØØØØ"ØØ	ØØØ
ØØ
ØØØØó1qñh  .ØÙØÐLÐMò
ò

ð ØQð
ð %Ð&EÐFô#ô Ð Õ r   