在x轴上绘制频率

时间:2019-05-06 21:25:15

标签: python r numpy matplotlib

我必须绘制一条倒V形或帐篷形曲线(拉普拉斯算式)。

在此处提供具有python语法的示例数据

import matplotlib.pyplot as plt
#x = np.linspace(-8., 8., 5000)
x= np.array([0, 2, 4, 5, 1, 0, 5, 1, 4, 5, 8, 3, 6])
pdf = np.exp(-abs(x-loc)/scale)/(2.*scale)
plt.plot(x, pdf)

当我绘制此图时,它给了我一个怪异的图。有没有一种简单的方法可以绘制此图,以使我在x轴的x方向和y轴的pdf方向都有元素的频率?

为进一步说明- 我需要将pdf索引到x中元素的各个值,然后x的各个值才有n-frequency。我需要针对n-frequency绘制pdf

对于调试,您可以取消注释x = np.linspace(-8., 8., 5000)并注释x= np.array([0, 2, 4, 5, 1, 0, 5, 1, 4, 5, 8]),您会看到倒V曲线。

我可以接受解决方案,也可以使用R或python提出建议。

示例曲线的外观

enter image description here

1 个答案:

答案 0 :(得分:2)

import numpy as np 
import matplotlib.pyplot as plt
x = np.random.normal(scale=5, size=50000) # create example data
bins = np.linspace(-15, 15, 31) # make bins to count occurrences within 
counts, bins = np.histogram(x, bins) # do the counting
# counts is the number of occurences of x in each bin 
bins = (bins[1:]+bins[:-1])/2.0 # take the midpoints of the bins for plotting
plt.loglog(bins, counts) # you'll only get the triangle shape in log-log space

用正确的数据替换x,我想这就是您想要的。您需要计算每个bin中的元素数量。您附加的链接告诉您垃圾箱是什么。您可以使用np.linspacenp.arange来创建此数组。

另外-我最近了解到,如果要在对数对数空间中绘制直方图,使用对数间隔的bin是明智的,因此点在对数对数空间中是均匀间隔的。您可以使用np.geomspace来做到这一点。