2015-04-21 28 views
0

我有兩個1D陣列。一個包含溫度和另一個徑向距離(針對各個溫度)。我想使用這些信息生成熱圖類型圖。 這裏是我遇到的問題: 1.如果我創建一個2d numpy網格,我如何關聯一個徑向距離到每個?假設徑向距離爲5個單位,如何從中心找到所有距離5個單位的網格? 2.然後如何將每個溫度與其各自的一組網格點相關聯。所以說溫度在徑向距離爲5時是20度,我怎麼表達這一點呢,因爲它在下面一組x,y格子方格上是20度?將徑向距離與python上的二維柵格相關

感謝您的任何幫助。

回答

0

meshgrid是你的朋友在這裏。首先建立網格加xy座標網格(你將有5×5的兩個數組):

import numpy as np 
x, y = np.meshgrid(np.arange(-2, 3), np.arange(-2, 3)) 
heatmap = 0 * x # easy way to get shape right 

現在,假的一些數據:

r = np.array((0, 0.5, 1.5, 2.5)) # Your radial distance 
T = np.array((100, 90, 70, 40)) # Your temperature at distance 

覆蓋從裏面的數據外,從中間開始(假設r單調遞增):

r2 = r**2 
xy2 = x**2 + y**2 
for ii in range(r.size): 
    heatmap[np.where(xy2 >= r2[ii])] = T[ii] 

就是這樣。這是由此產生的熱圖:

array([[ 40, 70, 70, 70, 40], 
     [ 70, 90, 90, 90, 70], 
     [ 70, 90, 100, 90, 70], 
     [ 70, 90, 90, 90, 70], 
     [ 40, 70, 70, 70, 40]]) 
+0

嗨,我試着用我的實際數據。我應該提到我的實際數據有更多條目的數組(接近2000左右)。但無論如何。我繪製使用plt.contourf(熱圖),它會產生一個只是一個藍色方形的圖像。我可能做錯了什麼?我改變的唯一的東西是r和T,PROFILER/T只是代碼中的函數 r = PROFILER(1.3,4.3e13) T = PROFILET(1.3,4.3e13) plt.contourf(熱圖, 100) plt.show() – Gabrielle

+0

此外,謝謝,我真的很感謝幫助 – Gabrielle

+0

@Gabrielle:您是否嘗試過「假」數據並獲得與我一樣的結果?我假設你將「r」值從低到高排列,所以如果他們是隨機的,你必須做一些更復雜的事情,比如排序兩個數組。 –