Neste tutorial, exploramos o Datashader, uma poderosa biblioteca de visualização de alta performance para renderizar conjuntos de dados massivos que rapidamente sobrecarregam as ferramentas de plotagem tradicionais. Percorreremos todo o seu pipeline de renderização no Google Colab, começando por nuvens de pontos densas e agregações baseadas em redução, até renderização categórica, visualizações de linha, dados raster, grades quadmesh, composição e visualizações analíticas no estilo de dashboard. À medida que avançamos em cada seção, focamos em como o Datashader transforma dados brutos em larga escala em uma estrutura visual significativa com velocidade, flexibilidade e clareza visual, mantendo o Matplotlib como a camada de apresentação final. Copiar Código Copiado Usar um navegador diferente import subprocess, sys subprocess.check_call([sys.executable, "-m", "pip", "install", "-q", "datashader", "colorcet", "numba", "scipy"]) import numpy as np import pandas as pd import datashader as ds import datashader.transfer_functions as tf from datashader import reductions as rd import colorcet as cc import matplotlib.pyplot as plt import matplotlib.colors as mcolors from matplotlib.gridspec import GridSpec from scipy.stats import multivariate_normal import time, warnings warnings.filterwarnings("ignore") print("Datashader version:", ds.__version__) def show(img, title="", ax=None, figsize=(6, 5)): standalone = ax is None if standalone: fig, ax = plt.subplots(figsize=figsize) rgba = img.to_pil() ax.imshow(rgba, origin="upper", aspect="auto") ax.set_title(title, fontsize=11, fontweight="bold") ax.axis("off") if standalone: plt.tight_layout() plt.show() print("
=== SEÇÃO 1: Pipeline Central ===") rng = np.random.default_rng(42) N = 2_000_000 x = np.concatenate([rng.normal(-1, 0.5, N//3), rng.normal( 1, 0.5, N//3), rng.normal( 0, 1.5, N//3)]) y = np.concatenate([rng.normal(-1, 0.5, N//3), rng.normal( 1, 0.5, N//3), rng.normal( 0, 0.5, N//3)]) df_base = pd.DataFrame({"x": x, "y": y}) canvas = ds.Canvas(plot_width=600, plot_height=500, x_range=(-4, 4), y_range=(-4, 4)) agg = canvas.points(df_base, "x", "y", agg=rd.count()) fig, axes = plt.subplots(1, 3, figsize=(15, 4)) combos = [ ("Linear / blues", tf.shade(agg, cmap=cc.blues, how="linear")), ("Log / fire", tf.shade(agg, cmap=cc.fire, how="log" )), ("Eq-hist / bmy", tf.shade(agg, cmap=cc.bmy, how="eq_hist")), ] for ax, (title, img) in zip(axes, combos): show(img, title, ax=ax) plt.suptitle("Seção 1 – 2 M pontos: Normalização Linear vs Log vs Eq-Hist", fontsize=13, fo
Fonte: MarkTechPost
Publicado em 2026-04-26