簡體   English   中英

以z為權重的xy平面上的熱圖

[英]Heatmap on x-y plane with z as weighting

在這個論壇上,我已經獲得了數十個有關熱圖的答案,但是我仍然遇到問題,所以我想問一下自己。 記住,直到一個月前,我還不知道Python是什么。

因此,我在三列中有一個很大的數據文件。 前兩個是標准的xy坐標。 對於每個點,我要使用第三個變量z作為權重以構建某種熱圖。

我已經看到了幾種方法,例如使用Meshgrid或更改數組大小,但是我認為問題是我的數組不是規則的或矩形的。 xy平面上只是一堆亂七八糟的隨機點,彼此之間並非均勻分布,每個點都有z值。

這只是我電子表格中數據的一小段:

x y z
392 616 0.5
416 614 1
497 603 3
533 598 3.5
383 589 0.5
574 574 4
...

我嘗試了幾種方法,例如重塑數組,但總是會遇到某種錯誤。 如何用z給定的每個點的權重將此數據繪制為熱圖? 謝謝。

我知道,由於數據點沒有規則地間隔開,因此熱圖可能為零,但我可以稍后通過使用我想出的方法外推它們的權重來對它們進行排序,這樣就不會是一個問題。

我最接近要查找的圖形的地方是使用以下代碼:

plt.hist2d(x, y, bins=8, weights=z, cmap="Greys")
plt.colorbar()

但是,這樣做的問題是,如果給定的“倉”中有多個點,則它會計算“匯總”權重-例如,如果在特定倉中有兩個權重為1和2.5的數據點,分別將垃圾箱着色,好像其權重為1 + 2.5 = 3.5。 有什么辦法可以使它顯示與最接近bin中心的數據點的權重相對應的顏色?

例如,如果權重為2.5的數據點確實靠近容器中心,而權重為1的數據點沿着容器的邊緣之一,是否有辦法使容器具有權重2.5?

謝謝您,抱歉造成不便。

看看http://scipy-cookbook.readthedocs.io/items/Matplotlib_Gridding_irregularly_spaced_data.html

我們的想法是使用griddatascipy.interpolate工作再上一個規律間隔的網格的間隔不規則的數據。

如果我假設您的數據x, y, z位於numpy數組中,則可以修改docs中給出的示例:

# define grid.
xi = np.linspace(np.amin(x),np.amax(x),100)
yi = np.linspace(np.amin(y),np.amax(y),100)
# grid the data.
zi = griddata((x, y), z, (xi[None,:], yi[:,None]), method='cubic')
# contour the gridded data
CS = plt.contour(xi,yi,zi,15,linewidths=0.5,colors='k')
CS = plt.contourf(xi,yi,zi,15,cmap=plt.cm.jet)
plt.colorbar() # draw colorbar

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM