usar probabilidad pmf normal intervalos exponencial estadistica distribucion confianza con como python matplotlib histogram

pmf - probabilidad y estadistica en python



¿Cómo trazar un mapa de densidad en python? (2)

Tengo un archivo .txt que contiene los valores x, y de puntos espaciados regularmente en un mapa 2D, la tercera coordenada es la densidad en ese punto.

4.882812500000000E-004 4.882812500000000E-004 0.9072267 1.464843750000000E-003 4.882812500000000E-004 1.405174 2.441406250000000E-003 4.882812500000000E-004 24.32851 3.417968750000000E-003 4.882812500000000E-004 101.4136 4.394531250000000E-003 4.882812500000000E-004 199.1388 5.371093750000000E-003 4.882812500000000E-004 1278.898 6.347656250000000E-003 4.882812500000000E-004 1636.955 7.324218750000000E-003 4.882812500000000E-004 1504.590 8.300781250000000E-003 4.882812500000000E-004 814.6337 9.277343750000000E-003 4.882812500000000E-004 273.8610

Cuando trazo este mapa de densidad en gnuplot, con los siguientes comandos:

set palette rgbformulae 34,35,0 set size square set pm3d map splot "dens_map.map" u 1:2:(log10($3+10.)) title "Density map"`

Lo que me da esta bella imagen:

Ahora me gustaría tener el mismo resultado con matplotlib.


El comentario de @HYRY es bueno, pero una respuesta mínima de trabajo completa (¡con una imagen!) Es mejor. Utilizando plt.pcolormesh

import pylab as plt import numpy as np # Sample data side = np.linspace(-2,2,15) X,Y = np.meshgrid(side,side) Z = np.exp(-((X-1)**2+Y**2)) # Plot the density map using nearest-neighbor interpolation plt.pcolormesh(X,Y,Z) plt.show()

Si los datos se parecen a su muestra, numpy puede cargarlos con el comando numpy.genfromtext .


Este es mi objetivo para una respuesta más completa que incluye elegir el mapa de color y una normalización logarítmica del eje de color.

import matplotlib.pyplot as plt import matplotlib.cm as cm from matplotlib.colors import LogNorm import numpy as np x, y, z = np.loadtxt(''data.txt'', unpack=True) N = int(len(z)**.5) z = z.reshape(N, N) plt.imshow(z+10, extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)), cmap=cm.hot, norm=LogNorm()) plt.colorbar() plt.show()

Supongo aquí que sus datos pueden transformarse en una matriz 2d por una simple reforma. Si este no es el caso, debe trabajar un poco más para obtener los datos de esta forma. El uso de imshow y no de pcolormesh es más eficiente aquí si los datos se encuentran en una cuadrícula (como parece). El fragmento de código anterior da como resultado la siguiente imagen, que se acerca bastante a lo que querías: