如何使用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)为常规点,一次。怎样才能显示出现的密度呢?例如,一个更大的标记?
答
可以传递一个可选的参数s
到plt.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()
伟大,感谢.. –
@AminGhaderi如果这是你需要什么,请把它标记为接受。 – Wen
谢谢。我只是标记了它。 –