2012-01-06 24 views
5

Tôi đang viết một kịch bản để tạo bản đồ nhiệt cho dữ liệu phân tán trên hai chiều. Sau đây là một ví dụ đồ chơi về những gì tôi đang cố gắng để làm:bản đồ nhiệt sử dụng bộ dữ liệu phân tán python matplotlib

import numpy as np 
from matplotlib.pyplot import* 
x = [1,2,3,4,5] 
y = [1,2,3,4,5] 
heatmap, xedges, yedges = np.histogram2d(x, y, bins=50) 
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] 
imshow(heatmap, extent = extent) 

tôi nên mong đợi một khu vực 'nóng nhất' là cùng y = x nhưng thay vào đó họ xuất hiện cùng y = -x + 5 tức là heatmap đọc một danh sách theo hướng ngược lại. Tôi không chắc tại sao điều này lại xảy ra. Bất kỳ đề xuất?

Cảm ơn

Trả lời

3

Thử imshow tham số origin=lower. Theo mặc định, nó đặt phần tử (0,0) của mảng ở góc trên bên trái.

Ví dụ:

import numpy as np 
import matplotlib.pyplot as plt 
x = [1,2,3,4,5,5] 
y = [1,2,3,4,5,5] 
heatmap, xedges, yedges = np.histogram2d(x, y, bins=10) 
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] 
fig = plt.figure() 
ax1 = fig.add_subplot(211) 
ax1.imshow(heatmap, extent = extent) 
ax1.set_title("imshow Default"); 
ax2 = fig.add_subplot(212) 
ax2.imshow(heatmap, extent = extent,origin='lower') 
ax2.set_title("imshow origin='lower'"); 

fig.savefig('heatmap.png') 

Tạo:

enter image description here

+0

hoạt động tuyệt vời, cảm ơn! – msohail

0

Quá giữ giao diện của Heatmap phù hợp với những gì bạn nhìn thấy trong phân tán, thực sự sử dụng:

ax2.imshow(heatmap.T, extent = extent,origin='lower') 
Các vấn đề liên quan