Sto imparando Python e questa è la mia prima domanda qui. Ho letto altri argomenti relativi all'uso di imshow ma non ho trovato nulla di utile. Scusa per il mio cattivo inglese.imshow e histogram2d: non riesco a farli funzionare
ho tracciato una serie di punti qui, grafico a sinistra:
points (left) and image (right)
Ora mi piacerebbe vedere un'immagine della densità dei punti, così ho usato imshow e histogram2d e ho ottenuto l'immagine a destra nel link precedente.
L'immagine non corrisponde alla distribuzione dei punti. Com'è possibile? Ho seguito le istruzioni nella guida e anche cambiato alcuni parametri, ma niente ha funzionato :(
Il codice è:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
j, h, k = np.loadtxt("test.dat", usecols=(2, 4, 6), \
unpack=True)
# límites
xmin = -0.5
xmax = 3.0
ymin = -0.5
ymax = 4.0
# colores
j_h = j - h
h_k = h - k
# no todas las estrellas son graficadas
x1 = 0.5
y1 = 0.5
b = 2.2
c = y1 - b * x1
x = y = np.array([])
for xi, yi in zip(h_k, j_h):
if xi < (yi - c)/b:
x = np.append(x, xi)
y = np.append(y, yi)
# gráfico
fig = plt.figure(figsize=(8, 7))
ax = fig.add_subplot(111)
#ax.plot(x, y, "go")
ax.set_xlabel(r"X", fontsize=14)
ax.set_ylabel(r"Y", fontsize=14)
ax.axis([xmin, xmax, ymin, ymax])
# imagen
rango = [[xmin, xmax], [ymin, ymax]]
binsx = int((xmax - xmin)/0.05)
binsy = int((ymax - ymin)/0.05)
binsxy = [binsx, binsy]
H, xedges, yedges = np.histogram2d(x, y, range=rango, bins=binsxy)
extent = [yedges[0], yedges[-1], xedges[0], xedges[-1]]
cp = ax.imshow(H, interpolation='bilinear', extent=extent, cmap=cm.jet)
fig.colorbar(cp)
plt.show()
I collegamenti dei dati utilizzati è qui:
https://dl.dropbox.com/u/10411539/python/test.dat
Qualsiasi aiuto è gradito!
specificare 'origine = 'lower'' per la funzione imshow – gcalmettes
@gcalmettes: Questo non ha funzionato :( – skytux
Ora ha funzionato, ma l'impostazione H.transpose() Grazie !!. – skytux