我的数据点会在很多条目中重复出现(创建许多重叠的 (x,y) 点),我真的很想知道图表上每个点的条目数。有没有一种简单的方法可以做到这一点(除了显而易见的编写一段代码来执行此操作之外?)
最佳答案
首先将你的点放入元组列表中:
L = [(1,2), (0,0), (0,0), (1,2), (1,2), (3,4)]
我假设您是从文件或其他东西中读取数据,而不是像我上面那样对其进行硬编码,因此请修改导入例程以提供元组列表,或者对导入的数据进行后处理数据以形成您的元组列表。
为什么我要继续讨论元组?因为它们是可散列的,因此可以用来制作一个集合:
S = set(L)
print (S)
set([(1, 2), (0, 0), (3, 4)])
现在我们有了数据中的所有独特点,耶! ...但是每个重复多少次? 这可以通过在列表中对它们进行计数来完成......或者懒得这样做让列表使用列表计数方法来计算它自己:
F = {}
for i in list(S):
F[i] = L.count(i)
现在 F 是一个字典,包含每个 (X,Y) 点的频率表 F.keys() 将为您提供所有唯一位置,字典包含每个点发生的次数。现在我们需要做的就是绘制它:
from matplotlib.pyplot import figure, show
fig = figure()
sub = fig.add_subplot(111)
由于我们使用的是怪异的元组列表,我们需要使用一些列表推导式将数据恢复为绘图喜欢的格式:
K = F.keys()
Xs = [i[0] for i in K]
Ys = [i[1] for i in K]
现在它会很好地绘制:
sub.plot(Xs, Ys, 'bo')
并且可以像这样用我们的频率注释情节:
for i in K:
sub.annotate(F[i], xy=i)
显示情节:
show()
你会得到这样的东西:
关于Python 散点图 - 如何查看每个点的条目数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27021056/