[英]How do I calculate polar plot density in matplotlib
我正在嘗試對發布的圖像1進行排序,以使最密集的點更清晰,指向我用於實現的答案的鏈接表示我正在嘗試實現的目標。
我的代碼是:
# 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)
如果不使用按密度對點進行排序的兩行代碼(注釋掉),這就是我得到的結果
這是實施排序時的結果
我正在嘗試實現與鏈接答案中所顯示的目標相似的圖像,因此圖像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.