在python中使用matplotlib的频率线图

时间:2018-06-29 14:56:09

标签: python matplotlib plot frequency

我正在尝试使用matplotlib绘制频率线图,x轴为数量(loan_amount,y轴为该数量出现的次数({{1} }),但我不确定如何将出现次数用作y值。

我认为一般代码必须以与此类似的方式开始,但是不确定loan_count应该是什么以及如何完成它:

y

我希望最终的情节看起来像这样:

Frequency Plot

非常感谢您的帮助!谢谢!

-编辑:

按照下面的建议从集合中实现计数器功能会导致以下图,这不是我想要的: Wrong plot

2 个答案:

答案 0 :(得分:1)

我不知道您数据库中的内容是什么,它是什么格式(如果您发布,我将修改答案),但是这就是我解决该问题的方法。

我假设在SELECT LOAN_AMOUNT FROM funded中,LOAN_AMOUNT是某种整数列。

所以:

import numpy as np
import matplotlib.pyplot as plt
loan_amount = cur.fetchall()
loan_amount = np.array(loan_amount,dtype='int') #setting up the array in numpy
x ,y  = np.unique(loan_amount, return_counts=True) # counting occurrence of each loan
plt.scatter(x,y)

如果将一些随机分布的数据输入此片段中,则会得到以下图片,您可能正在寻找它:

jsfiddle version

>>> a = np.random.rayleigh(1000,100000)
>>> a = a.astype('int')
>>> x ,y = np.unique(a,return_counts=True)
>>> plt.scatter(x,y)
<matplotlib.collections.PathCollection object at 0x7f3b18a524e0>
>>> plt.show()
>>> 

线形图有些混乱,但这取决于您的数据集结果的外观:

not throwing

答案 1 :(得分:0)

您做错的地方是关于y轴。您应该使用numpy.linespace()函数。您应该为此写点东西。抱歉,我现在无法检查。

 y = numpy.linspace(0, x[-1], x.size)