我想散布如下两个类别变量
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)的标记大两倍,以显示不同的情况的重点。正确的方法是什么? (在一般的解决方案中,我手动计算发生次数,然后将其放入size
的{{1}}自变量中)
我已经搜索了其他SOF问题,但是它们都建议使用alpha like here,但是我希望看到一个标记大小,以更好地了解事件之间的不同比例。
指针可能是根据this answer
中的建议使用一些内核密度估计值为了给我的问题提供更多的背景信息,两个输出是两个分类器的预测,我想探索这些预测之间的差异,以评估是否将它们组合在一起。
答案 0 :(得分:2)
您可以利用可以使用Counter
模块获得的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()))