我有一个任务,我必须在同一个图中显示瑞利分布的绘图和直方图 (在Y轴上永远不会达到1,对我来说最高点是0.30)
我有一个x的数组(从0到10的线性空间),和一个y的计算数组(从两个参数1,5和2的瑞利函数计算)
我能很容易地画出来。但无法显示直方图,因为直方图的值从不小于1(因为直方图的x值是某些x范围的值在y刻度上出现的频率)
你能给点建议吗
以下是代码示例: (我想我必须以某种方式计算y上的x次,对吗?这就是我错过的?)
import math
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import rayleigh
RAYLEIGH_LOW_LIMIT = 0
RAYLEIGH_HIGH_LIMIT = 10
RAYLEIGH_ARG_1 = 0.7
RAYLEIGH_ARG_2 = 2
# Part 1: Make selection of size 1000
# Build histogramm and theoretical density
selection = np.linspace(RAYLEIGH_LOW_LIMIT, RAYLEIGH_HIGH_LIMIT, num=1000)
y = rayleigh.pdf(selection, RAYLEIGH_ARG_1, RAYLEIGH_ARG_2)
plt.plot(selection, y, "r-", label="Density")
plt.hist(selection, bins=10, density=True, label="Histogram", rwidth=0.1)
plt.show() # to display plot
我想你是想展示瑞利分布的直方图,在它上面叠加一条代表分布的线。 如果是这样,您需要为直方图生成一些值,因为linspace只是x值的范围。“linspace”对于直方图并没有直接的用处。 要生成对直方图有用的值,可以使用以下Montecarlo方法(必须将其附加到代码中,因为例如“y”是在代码中定义的)
结果图如下所示:
请记住,这是一个近似值
当发电机可用时,另一个可能的解决方案(我刚刚查看了手册)是调用rvs
相关问题 更多 >
编程相关推荐