meshgrid
是你的朋友在這裏。首先建立網格加x
和y
座標網格(你將有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]])
嗨,我試着用我的實際數據。我應該提到我的實際數據有更多條目的數組(接近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
此外,謝謝,我真的很感謝幫助 – Gabrielle
@Gabrielle:您是否嘗試過「假」數據並獲得與我一樣的結果?我假設你將「r」值從低到高排列,所以如果他們是隨機的,你必須做一些更復雜的事情,比如排序兩個數組。 –