Python matplotlib散布:重叠点越多,标记越大
我想把两个分类变量散绘如下Python matplotlib散布:重叠点越多,标记越大,python,matplotlib,Python,Matplotlib,我想把两个分类变量散绘如下 from matplotlib import pyplot as plt a=[1,1,1,1,2,2] b=[2,2,2,2,1,1] plt.scatter(a,b) 如果我画这个图,我将只看到两个点(在(1,2)中有4个重叠点,在(2,1)中有2个重叠点),而无法理解两个重叠点的不同出现 我希望看到散点图,其中左侧点(1,2)的标记比右侧点(2,1)的标记大两倍,以显示点的不同出现。正确的方法是什么?(在繁琐的解决方案旁边,我用手计算出现的次数,并将
from matplotlib import pyplot as plt
a=[1,1,1,1,2,2]
b=[2,2,2,2,1,1]
plt.scatter(a,b)
如果我画这个图,我将只看到两个点(在(1,2)中有4个重叠点,在(2,1)中有2个重叠点),而无法理解两个重叠点的不同出现
我希望看到散点图,其中左侧点(1,2)的标记比右侧点(2,1)的标记大两倍,以显示点的不同出现。正确的方法是什么?(在繁琐的解决方案旁边,我用手计算出现的次数,并将它们放在plt.scatter
的size
参数中)
我已经搜索了其他SOF问题,但他们都建议使用alpha,但我希望看到标记大小,以便更好地了解事件之间的不同比例
指针可能是使用中建议的某种内核密度估计
为了给我的问题提供更多的上下文,这两个输出是两个分类器的预测,我想探索预测之间的差异,以评估是否将它们集成。您可以利用x点(甚至是这个特定数据集的y点)的出现频率可使用模块获取。然后,频率可以用作定义标记大小的重缩放因子。这里
200
只是一个大数字,用来强调标记的大小
from matplotlib import pyplot as plt
from collections import Counter
a=[1,1,1,1,2,2]
b=[2,2,2,2,1,1]
weights = [200*i for i in Counter(a).values() for j in range(i)]
plt.scatter(a, b, s = weights)
plt.show()
另一个可视化分布的选项是条形图
freqs = Counter(a)
plt.bar(freqs.keys(), freqs.values(), width=0.5)
plt.xticks(list(freqs.keys()))
是的,计数器是一个很好的选择:您认为散布是最好的绘图吗?或者可能有更好的图来突出分类器预测的不同分布?@AlessandroSolbiati:条形图是另一个很好的选择,它将直接显示发生的频率