Tôi đang học Python và đây là câu hỏi đầu tiên của tôi ở đây. Tôi đã đọc các chủ đề khác liên quan đến việc sử dụng imshow nhưng không tìm thấy bất kỳ điều gì hữu ích. Xin lỗi vì tiếng Anh của tôi không tốt.imshow và histogram2d: không thể khiến chúng hoạt động
Tôi đã vẽ một tập hợp các điểm ở đây, trái đồ họa:
points (left) and image (right)
Bây giờ tôi muốn xem một hình ảnh của mật độ điểm, vì vậy tôi sử dụng imshow và histogram2d và tôi đã nhận hình ảnh ở bên phải trong liên kết trước.
Hình ảnh không tương ứng với phân phối điểm. Sao có thể như thế được? Tôi đã theo các hướng dẫn trong sự giúp đỡ và thậm chí thay đổi một số thông số nhưng không làm việc :(
Mã này là:
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()
Các liên kết cho các dữ liệu sử dụng là ở đây:
https://dl.dropbox.com/u/10411539/python/test.dat
Bất kỳ trợ giúp nào được đánh giá cao
định 'origin =' lower'' cho hàm imshow – gcalmettes
@gcalmettes: Đây không làm việc :( – skytux
Bây giờ nó làm việc, nhưng thiết H.transpose() Cảm ơn !!. – skytux