sns example cmap annot python matplotlib plot visualization heatmap

python - example - Genere un mapa de calor en MatPlotLib usando un conjunto de datos de dispersión



seaborn heatmap (1)

Convierta sus datos de series de tiempo en un formato numérico con matplotlib.dats.date2num. Establezca una cuadrícula rectangular que abarque sus rangos xey y realice su convolución en esa parcela. Haga una gráfica de pseudo-color de su convolución y luego vuelva a formatear las etiquetas x para que sean fechas.

El formato de la etiqueta es un poco desordenado, pero razonablemente bien documentado . Solo necesita reemplazar AutoDateFormatter con DateFormatter y una cadena de formato apropiada.

Tendrá que ajustar las constantes en la circunvolución de sus datos.

import numpy as np import datetime as dt import pylab as plt import matplotlib.dates as dates t0 = dt.date.today() t1 = t0+dt.timedelta(days=10) times = np.linspace(dates.date2num(t0), dates.date2num(t1), 10) dt = times[-1]-times[0] price = 100 - (times-times.mean())**2 dp = price.max() - price.min() volume = np.linspace(1, 100, 10) tgrid = np.linspace(times.min(), times.max(), 100) pgrid = np.linspace(70, 110, 100) tgrid, pgrid = np.meshgrid(tgrid, pgrid) heat = np.zeros_like(tgrid) for t,p,v in zip(times, price, volume): delt = (t-tgrid)**2 delp = (p-pgrid)**2 heat += v/( delt + delp*1.e-2 + 5.e-1 )**2 fig = plt.figure() ax = fig.add_subplot(111) ax.pcolormesh(tgrid, pgrid, heat, cmap=''gist_heat_r'') plt.scatter(times, price, volume, marker=''x'') locator = dates.DayLocator() ax.xaxis.set_major_locator(locator) ax.xaxis.set_major_formatter(dates.AutoDateFormatter(locator)) fig.autofmt_xdate() plt.show()

Mi pregunta es casi exactamente similar a esta . Sin embargo , no estoy satisfecho con las respuestas, porque quiero generar un mapa de calor real, sin agrupar explícitamente los datos.

Para ser precisos, me gustaría mostrar la función que es el resultado de una convolución entre los datos de dispersión y un kernel personalizado, como 1 / x ^ 2.

¿Cómo debo implementar esto con matplotlib?

EDITAR : Básicamente, lo que he hecho es esto . El resultado está aquí . Me gustaría mantener todo, el eje, el título, las etiquetas, etc. Básicamente basta con cambiar la trama para que sea como la describí, mientras se vuelve a implementar lo menos posible.