簡體   English   中英

如何在Matplotlib中計算極坐標圖密度

[英]How do I calculate polar plot density in matplotlib

我正在嘗試對發布的圖像1進行排序,以使最密集的點更清晰,指向我用於實現的答案的鏈接表示我正在嘗試實現的目標。

如何在matplotlib中繪制以密度着色的散點圖?

我的代碼是:

# Calculate the point density: Saccade Orientation is an angle, Amplitude is supposed to be the Y value
xy = np.vstack([saccade_orientation_PP, saccade_amplitude_PP])
z = gaussian_kde(xy)(xy)

# Sort the points by density, so that the densest points are plotted last
idx = z.argsort()
x, y, z = np.array(saccade_orientation_PP)[idx], np.array(saccade_amplitude_PP)[idx], z[idx]

ax1 = plt.subplot(121, polar=True)
ax1.scatter(saccade_orientation_PP, saccade_amplitude_PP, c=z, edgecolor='', alpha = 0.75)

如果使用按密度對點進行排序的兩行代碼(注釋掉),這就是我得到的結果

所得圖像**無**值,按z排序

這是實施排序時的結果

產生的圖像**值帶有按z排序的**

我正在嘗試實現與鏈接答案中所顯示的目標相似的圖像,因此圖像1更清晰,但我不明白為什么對它進行排序時會得到下面的第二個圖像。

謝謝。

這里的關鍵問題是極坐標的使用。

密度必須在xy直角坐標上進行計算,極坐標的使用會產生奇怪的距離值,請嘗試以矩形圖的形式繪制數據並看到。

您可以在計算z值之前包括坐標轉換。 例如:

xy = np.vstack([np.sin(angle)*amp, np.cos(angle)*amp]) 
z = gaussian_kde(xy)(xy) 

暫無
暫無

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

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