如何在散点图中考虑相同的数据点?

时间:2015-09-21 05:16:15

标签: python pandas matplotlib

我正在使用一些具有多个相同数据点的数据。我想在散点图中可视化数据,但分散绘图并不能很好地显示重复数据。

如果我更改了alpha值,那么相同的数据点会变得更暗,这很不错,但并不理想。

是否有某种方法可以将点的颜色映射到数据集中出现的次数?大小怎么样?如何将点的大小指定为数据集中出现的次数?

1 个答案:

答案 0 :(得分:2)

正如有人指出的那样,这是否有意义取决于您的数据集。如果你有合理的离散点并且确切的匹配是有意义的,你可以这样做:

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()

注意:您需要根据点密度调整半径(100参数中的值s)。我还使用计数的平方根来缩放它,使得点面积与计数成比例。

另请注意:如果您的点非常密集,则使用不同类型的绘图可能更合适。例如,直方图(我个人喜欢hexbin的2d数据)在这些情况下是一个不错的选择。