如何使用matplotlib使散点更大,密度更高?

问题描述:

我正在使用matplotlib绘制一个图。 x和y轴是离散值,因此列表中的几个(x,y)点具有相同的值。例如,假设我们有以下的X,Y点:如何使用matplotlib使散点更大,密度更高?

x=[0,1,1,2,2,2,2,2] 
y=[0,1,2,3,3,3,3,5] 

现在所有的(X,Y)点的发生一次,但(2,3)发生的4倍。当我使用plt.scatter(x,y)时,它只显示(2,3)为常规点,一次。怎样才能显示出现的密度呢?例如,一个更大的标记?

可以传递一个可选的参数splt.scatter指示正在绘制的各点的大小:如果阿尔法小于1的更频繁的点会显得更暗/不太透明。为了获得与每个点的出现相对应的大小,首先构建一个字典,计算出现的次数,然后创建每个点的大小列表。

import matplotlib.pyplot as plt 
from collections import Counter 

x=[0,1,1,2,2,2,2,2] 
y=[0,1,2,3,3,3,3,5] 

# count the occurrences of each point 
c = Counter(zip(x,y)) 
# create a list of the sizes, here multiplied by 10 for scale 
s = [10*c[(xx,yy)] for xx,yy in zip(x,y)] 

# plot it 
plt.scatter(x, y, s=s) 
plt.show() 

enter image description here

+0

伟大,感谢.. –

+0

@AminGhaderi如果这是你需要什么,请把它标记为接受。 – Wen

+0

谢谢。我只是标记了它。 –

将透明度设置为小于1可能是一种可视化的方法;

plt.scatter(x, y, s=80, alpha=0.2) 

enter image description here