Files
fn_registry/python/functions/datascience/plot_kde_2d.py
T
egutierrez dabc945eda feat: extraccion masiva footprint_aurgi (41 funcs + 4 types + stack Docker geo)
Extrae al registry funciones del proyecto interno footprint_aurgi:
- core (6): slugify_ascii, normalize_for_join, cp_provincia_es, infer_provincia_from_cp, safe_read_csv_fallback, csv_to_parquet_duckdb
- geo puras (7): haversine_km, point_in_ring, point_in_polygon, point_in_polygons_bbox, polygon_bbox, extent_with_padding, distance_bucket
- geo I/O (4): load_geojson_polygons, load_boundary_gdf, add_basemap_osm, add_basemap_with_timeout
- valhalla client (4): valhalla_route, valhalla_isochrone, valhalla_isochrones_async, valhalla_matrix_1_to_n
- datascience stats (7): trimmed_mean, geometric_mean, detect_distribution_type, best_central_tendency, summary_stats, kde_density_levels, alpha_shape_concave_hull
- datascience fuzzy (3): fuzzy_merge_adaptive (rapidfuzz), words_to_dataset, remove_words_from_column
- datascience viz (2): plot_kde_2d, plot_heatmap_log
- infra (4): compress_pdf_ghostscript, render_table_page_pdfpages, add_header_logo, osm2pgsql_ingest
- pipelines (4): setup_geo_stack_docker, compute_centers_reachability, generate_isochrones_by_zone, count_points_per_zone
- types geo (4): LonLat, BBox, IsochroneRequest, Centro

Incluye:
- apps/footprint_geo_stack/ (PostGIS + Martin + Valhalla via docker-compose)
- 131/132 tests pasan (1 skip esperado: osm2pgsql en PATH)
- Issue tracker dev/issues/0052-footprint-aurgi-extraction.md
- Atribucion uniforme: source_repo internal:footprint_aurgi, source_license internal-aurgi
- Build con 9 agentes en paralelo (8 wave 1 + 1 wave 2 pipelines)

Tambien commitea trabajo previo no commiteado: aggregate_extraction_results, chunk_with_overlap, clean_pdf_text, merge_entity_aliases, extract_graph_gliner2, extract_relations_mrebel, extract_triples_spacy_es, gliner2/mrebel/marianmt/rebel/spacy_es load_model, parse_rebel_output, translate_es_to_en, issue 0050/0051.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 23:35:22 +02:00

54 lines
1.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Plot a 2D KDE density overlay on a matplotlib Axes using seaborn."""
from __future__ import annotations
def plot_kde_2d(
ax: "Axes",
xs: "list[float] | np.ndarray",
ys: "list[float] | np.ndarray",
cmap: str = "magma",
alpha: float = 0.35,
thresh: float = 0.02,
levels: int = 30,
bw_adjust: float = 0.6,
) -> None:
"""Plot a 2D kernel density estimate as a filled contour overlay.
Uses seaborn.kdeplot to render a smooth density surface over the given
scatter of (x, y) points. If either array is empty the function returns
immediately without painting anything.
Args:
ax: matplotlib Axes to draw on.
xs: X coordinates (longitude or projected x).
ys: Y coordinates (latitude or projected y).
cmap: Matplotlib colormap name for the density fill. Default "magma".
alpha: Opacity of the density overlay (01). Default 0.35.
thresh: Density threshold below which contours are not drawn (01).
Default 0.02 removes very sparse outlier contours.
levels: Number of contour levels. Default 30.
bw_adjust: Bandwidth adjustment factor for the kernel. Values < 1
produce tighter, more detailed estimates. Default 0.6.
"""
import numpy as np # type: ignore
import seaborn as sns # type: ignore
xs_arr = np.asarray(xs)
ys_arr = np.asarray(ys)
if xs_arr.size == 0 or ys_arr.size == 0:
return
sns.kdeplot(
x=xs_arr,
y=ys_arr,
ax=ax,
cmap=cmap,
fill=True,
alpha=alpha,
thresh=thresh,
levels=levels,
bw_adjust=bw_adjust,
)