簡體   English   中英

使用色彩圖在二維平面上繪制(x,y,z)三倍

[英]Plot (x, y, z) triples on 2d plane with a colormap

我正在使用python2matplotlib

我有很多三元組(x, y, z) 我需要將它們繪制為2d平面上的直方圖/熱圖 ,其軸為xy ,顏色為z

主要問題是x和y不在任何類型的網格上,而是自由變化,因此需要某種插值。

我嘗試了contour(X, Y, Z) ,但這將Z作為2d數組,這意味着它需要網格上的值。

我喜歡將hexbin及其C輸入選項用於此類操作。 例如,如果您已將數據從元組三元組解析為x_arry_arrz_arr數組,則可以執行以下操作:

from matplotlib.pyplot import hexbin

hexbin(x_arr, y_arr, C=z_arr)

這隱式地對六邊形面元上的數據進行平均。 如果您想要的內容與簡單的平均值不同,則可以更改reduce_C_function選項。 您可以使用gridsize選項更改垃圾箱數量。

盡管如果您有大量的(x,y,z)三元組且x和y 分布均勻 ,則hexbin可能會很好,但如果它們不是(和/或太少),它會帶有很多相當不愉快的空格。

假設你有

X = [ ... ]
Y = [ ... ]
Z = [ ... ]

您首先需要創建一個網格

grid_x, grid_y = np.mgrid[0:max(Y):800j, 0:max(X):800j]

其中0:max(Y)是間隔,步長為800 然后手動插值

values = interpolate.griddata((Y, X), Z, (grid_x, grid_y), method='linear')

這導致可以像這樣繪制二維數組

pl.imshow(values, origin='lower', extent=[0, max(X), 0, max(Y)],
          aspect='auto', cmap=pl.get_cmap('YlOrRd'))

暫無
暫無

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

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