我有一個函數returnValuesAtTime
,它返回三個列表-x_vals
,y_vals
和swe_vals
。所有三個列表具有相同的長度,並且swe_vals
中的每個元素對應於x_vals
的x-value
和來自y_vals
的y-value
。我希望生成一個使用(x,y)
座標和swe_vals
作爲強度的圖例的熱圖。使用matplotlib中的3D數據生成熱圖
我寫以下代碼:
def plotValuesAtTimeMap(t):
x_vals,y_vals,swe_vals=returnValuesAtTime(t)
x_points=len(x_vals)
y_points=len(y_vals)
xx=np.linspace(x_vals[0],x_vals[-1],x_points)
yy=np.linspace(y_vals[0],y_vals[-1],y_points)
fig,ax=plt.subplots()
im=ax.pcolormesh(xx,yy,z)
fig.colorbar(im)
ax.axis('tight')
plt.show()
一旦使用returnValuesAtTime(t)
獲得的三個列表,我走x_vals
和y_vals
長度。然後,我使用這些來生成x和y方向的間距,其限制是x_vals
和y_vals
的第一個和最後一個元素。然後我嘗試生成colormesh
。但是這給了我一個空的colormesh
沒有值。
什麼可能會出錯?將使用3D numpy
而不是三個列表解決問題?
每個列表的前10個元素是:
x_vals[0:10]
[439936.86573189893,
439936.86573189893,
439936.86573189893,
439936.86573189893,
439936.86573189893,
439936.86573189893,
439936.86573189893,
439936.86573189893,
439936.86573189893,
439936.86573189893]
y_vals[0:10]
[4514018.2797159087,
4513898.2797159087,
4513778.2797159087,
4513658.2797159087,
4513538.2797159087,
4513418.2797159087,
4513298.2797159087,
4513178.2797159087,
4513058.2797159087,
4512938.2797159087]
swe_vals[0:10]
[2.7520323,
2.7456229,
2.7456021,
2.745455,
2.7478349,
2.7445269,
2.7484877,
2.7524617,
2.75491,
2.7509627]
編輯:
我已經添加表示以下(X,Y)格範圍的散點圖:
x和y值在列表中,每個長度爲6804。每個(x,y)點在單獨的列表中具有相應的z值,其長度也是6804。爲了闡明我希望實現的目標,我想生成一個熱圖,如圖中的每個網格顏色所表示的z軸大小。類似下面清單所示:
在這個例子中的情節,所有的Z值是相同的。所以整個網格空間的顏色是相同的。
與新產生的劇情編輯(基於成員CT朱的建議):
假設你的'x_vals'和'y_vals'不是均勻分佈的,比如'1,2,3,4,....'安全嗎?很可能是的,因爲你有一行'xx = np.linspace(x_vals [0],x_vals [-1],x_points)'? –
@CTZhu它們均勻分佈,其中x_vals的前三個元素爲[439936.8657319,440056.8657319,440176.8657319],y_vals的前三個元素爲[4514018.27971591,4513898.27971591,4513778.27971591]。 x_vals中的每個元素比前一個元素多120.0,並且y_vals中的每個元素都是120。比以前少了0個。 –
我看到了,就像'meshgrid'出來的那樣 –