我有数据x,y,可以制作散点图。如何在python中使用matplot更改频率标记?

时间:2018-01-30 22:33:48

标签: python matplotlib

我一直在谷歌搜索一个小时左右,但没有找到我要找的东西。这是我在我的代码中所处的位置。

我使用BS提取信息并将其保存为CSV文件。 CSV有x,y坐标,我可以将其制作成散点图。

与此类似(大约有1,500个数据点,显然有100个组合)

的x,y

0,6

1,2

0,7

4,6

9,9

0,0

4,4

1,2

我想要做的是使散点图上的点的大小与它们出现频率的频率一致。

df = pd.read_csv("book8.csv")

df.plot(kind = 'scatter',x='x',y='y')


plt.show()

数组只是介于0和9之间的数字。我想将大小调整为0-9组合出现的频率。

我目前只有这个,显然不是很有用。

https://imgur.com/a/25PEC

我是否需要将x和y设置为自己的数组才能实现此目的而不是使用数据帧(df)?

2 个答案:

答案 0 :(得分:3)

我不知道我怎么能把它变成numpy(我会继续思考)。与此同时,Python解决方案:

import matplotlib.pyplot as plt
import random
from collections import Counter 

x_vals = [random.randint(0, 10) for x in range(1000)]
y_vals = [random.randint(0, 10) for x in range(1000)]

combos = list(zip(x_vals, y_vals))
weight_counter = Counter(combos)

weights = [weight_counter[(x_vals[i], y_vals[i])] for i, _ in enumerate(x_vals)]

plt.scatter(x_vals, y_vals, s=weights)
plt.show()

答案 1 :(得分:1)

您应该在您设置fill=True的位置绘制圆圈。

然后,您将计算每个组合的迭代次数,得到圆的半径的百分比,或者只是为每个不同的圆圈的每次迭代添加一些数字到半径。