2
我正在處理一些具有多個相同數據點的數據。我想在散點圖中顯示數據,但散點圖並不能很好地顯示重複數據。如何計算散點圖中相同的數據點?
如果我改變alpha值,那麼相同的數據點會變得更暗,這很好,但並不理想。
有什麼方法可以將點的顏色映射到數據集中出現的次數?大小怎麼樣?如何將點的大小分配給數據集中發生的次數?
我正在處理一些具有多個相同數據點的數據。我想在散點圖中顯示數據,但散點圖並不能很好地顯示重複數據。如何計算散點圖中相同的數據點?
如果我改變alpha值,那麼相同的數據點會變得更暗,這很好,但並不理想。
有什麼方法可以將點的顏色映射到數據集中出現的次數?大小怎麼樣?如何將點的大小分配給數據集中發生的次數?
正如它指出的那樣,這是否有意義取決於您的數據集。如果你有合理的離散點和精確匹配任何意義,你可以做這樣的事情:
import numpy as np
import matplotlib.pyplot as plt
test_x=[2,3,4,1,2,4,2]
test_y=[1,2,1,3,1,1,1] # I am just generating some test x and y values. Use your data here
#Generate a list of unique points
points=list(set(zip(test_x,test_y)))
#Generate a list of point counts
count=[len([x for x,y in zip(test_x,test_y) if x==p[0] and y==p[1]]) for p in points]
#Now for the plotting:
plot_x=[i[0] for i in points]
plot_y=[i[1] for i in points]
count=np.array(count)
plt.scatter(plot_x,plot_y,c=count,s=100*count**0.5,cmap='Spectral_r')
plt.colorbar()
plt.show()
注意:您將需要調整根據您的點密度的半徑(以日s
參數的值100
)。我還使用計數的平方根來縮放它,以便點面積與計數成正比。
另請注意:如果您有非常密集的點,則可能更適合使用不同類型的圖。例如直方圖(我個人喜歡hexbin
二維數據)在這些情況下是一個體面的替代品。
你不喜歡使用alpha?您建議的其他方法的缺點是它們依賴於計算完全相同的值。但是你可能有很多*幾乎相等的值在散點圖上重疊。任何涉及計算單個值的方法都不會改善繪圖,但使用alpha將會,因爲部分重疊點仍然會導致變暗。 – BrenBarn