在 python 中绘制正态曲线
Drawing a normal curve in python
我在 python 中看到了很多关于正态分布和曲线绘制的文档,我对此有点困惑,我已经生成了平均值为 30 和标准偏差为 3.7 的正态随机变量,并使用函数norm.dist 我估计了 pdf 函数
=NORM.DIST(A2,$H,$I,FALSE)
根据这个公式画散点图得到
出于演示目的,我想使用 python 绘制相同的草图,我找到了 scipy 和 numpy 版本,请帮我澄清一下,这是我的一些数字
我试过下面的代码
from scipy.stats import norm
import pandas as pd
import matplotlib.pyplot as plt
data_random =pd.read_excel("data_for_normal.xlsx")
data_values =data_random["NormalVariables"].values
pdf_values =norm.pdf(data_values,30,3.7)
plt.plot(data_values,pdf_values)
plt.title("normal curve")
plt.xlabel("x values")
plt.ylabel("probability density function")
plt.show()
但我有
结果:
print(data_random.head(10))
NormalVariables
0 29.214494
1 30.170595
2 36.014144
3 30.388626
4 28.398749
5 24.861042
6 29.519316
7 24.207164
8 35.779376
9 26.042977
# plt.plot connects datapoints with lines:
x = [0,1,2]
y = [1,4,3]
plt.plot(x,y)
#note that lines are drawn between adjacent elements in the list,
#so a line from (0,1) to (1,4) and then to (2,3)
# if the order of the datapoints is changed, the position of the datapoints
# remains unchanged, but now lines are drawn between different points
x = [2,0,1]
y = [3,1,4]
plt.plot(x,y)
所以你在你的图中看到所有交叉的原因是你绘制了未排序的数据。
如果您只想复制 excel 的情节,请改用 plt.scatter
。该图仅绘制数据点,不绘制它们之间的联系。
x = [2,0,1]
y = [3,1,4]
plt.scatter(x,y)
我在 python 中看到了很多关于正态分布和曲线绘制的文档,我对此有点困惑,我已经生成了平均值为 30 和标准偏差为 3.7 的正态随机变量,并使用函数norm.dist 我估计了 pdf 函数
=NORM.DIST(A2,$H,$I,FALSE)
根据这个公式画散点图得到
出于演示目的,我想使用 python 绘制相同的草图,我找到了 scipy 和 numpy 版本,请帮我澄清一下,这是我的一些数字
我试过下面的代码
from scipy.stats import norm
import pandas as pd
import matplotlib.pyplot as plt
data_random =pd.read_excel("data_for_normal.xlsx")
data_values =data_random["NormalVariables"].values
pdf_values =norm.pdf(data_values,30,3.7)
plt.plot(data_values,pdf_values)
plt.title("normal curve")
plt.xlabel("x values")
plt.ylabel("probability density function")
plt.show()
但我有
结果:
print(data_random.head(10))
NormalVariables
0 29.214494
1 30.170595
2 36.014144
3 30.388626
4 28.398749
5 24.861042
6 29.519316
7 24.207164
8 35.779376
9 26.042977
# plt.plot connects datapoints with lines:
x = [0,1,2]
y = [1,4,3]
plt.plot(x,y)
#note that lines are drawn between adjacent elements in the list,
#so a line from (0,1) to (1,4) and then to (2,3)
# if the order of the datapoints is changed, the position of the datapoints
# remains unchanged, but now lines are drawn between different points
x = [2,0,1]
y = [3,1,4]
plt.plot(x,y)
所以你在你的图中看到所有交叉的原因是你绘制了未排序的数据。
如果您只想复制 excel 的情节,请改用 plt.scatter
。该图仅绘制数据点,不绘制它们之间的联系。
x = [2,0,1]
y = [3,1,4]
plt.scatter(x,y)