python生成直方图和拟合曲线
时间: 2023-05-11 20:02:47 浏览: 323
可以使用Python中的matplotlib库来生成直方图和拟合曲线。以下是一个简单的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 生成随机数据
data = np.random.randn(1000)
# 绘制直方图
plt.hist(data, bins=30, density=True, alpha=0.5)
# 拟合正态分布曲线
mu, std = norm.fit(data)
x = np.linspace(-5, 5, 100)
p = norm.pdf(x, mu, std)
plt.plot(x, p, 'k', linewidth=2)
# 显示图像
plt.show()
```
这段代码将生成一个包含随机数据的直方图,并在其上拟合一个正态分布曲线。
相关问题
用Python根据‘新生数据.xls’,分别绘制: 男生身高分布直方图和拟合曲线; 女生身高分布直方图和拟合曲线;
好的,我可以为您完成这个任务。以下是Python代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
from scipy.stats import norm
from scipy.optimize import curve_fit
# 读取数据
data = pd.read_excel('新生数据.xls')
# 分别获取男生和女生的身高数据
male_height = data[data['性别'] == '男']['身高']
female_height = data[data['性别'] == '女']['身高']
# 绘制男生身高分布直方图和拟合曲线
plt.hist(male_height, bins=20, density=True, alpha=0.5, color='blue')
mu, std = norm.fit(male_height)
x = np.linspace(male_height.min(), male_height.max(), 100)
p = norm.pdf(x, mu, std)
plt.plot(x, p, 'k', linewidth=2)
plt.title('Male Height Distribution')
plt.xlabel('Height (cm)')
plt.ylabel('Probability Density')
plt.show()
# 绘制女生身高分布直方图和拟合曲线
plt.hist(female_height, bins=20, density=True, alpha=0.5, color='pink')
mu, std = norm.fit(female_height)
x = np.linspace(female_height.min(), female_height.max(), 100)
p = norm.pdf(x, mu, std)
plt.plot(x, p, 'k', linewidth=2)
plt.title('Female Height Distribution')
plt.xlabel('Height (cm)')
plt.ylabel('Probability Density')
plt.show()
```
这段代码会生成两个图表,分别是男生身高分布直方图和拟合曲线,以及女生身高分布直方图和拟合曲线。其中,直方图显示了身高数据的分布情况,拟合曲线则是使用正态分布函数对数据进行拟合得到的。
python直方图中显示拟合曲线
要在Python直方图中显示拟合曲线,可以使用Matplotlib库中的plot函数。以下是一个示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
# 生成随机数据
data = np.random.normal(0, 1, 1000)
# 绘制直方图
plt.hist(data, bins=30, density=True)
# 拟合正态分布曲线
mu, std = norm.fit(data)
x = np.linspace(-4, 4, 100)
y = norm.pdf(x, mu, std)
plt.plot(x, y)
# 显示图像
plt.show()
```
在这个代码中,首先生成了1000个正态分布的随机数据,然后使用Matplotlib的hist函数绘制了直方图。接下来,使用Scipy库中的norm.fit函数拟合正态分布曲线,并使用norm.pdf函数计算曲线上各个点的纵坐标。最后,使用Matplotlib的plot函数绘制拟合曲线,并调用show函数显示图像。
阅读全文