用matplotlib创建一个包含1行2列子图的图片,每个子图要包含图例、网格、标题,左边子图画出上面数组的密度分布的直方图,并将标准正态分布的密度分布函数图像和上述直方图画在同一图中,标准正态分布的密度分布函数为 𝑓(𝑥)=12𝜋⎯⎯⎯⎯√𝑒−𝑥22
时间: 2024-03-22 07:38:34 浏览: 62
可以使用matplotlib库来绘制这个图片,具体实现代码如下:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成符合正态分布的随机数
arr = np.random.randn(10000)
# 创建1行2列子图的图片
fig, axs = plt.subplots(1, 2, figsize=(12, 6))
# 绘制左边子图
axs[0].hist(arr, bins=50, density=True, label='Sample data')
x = np.linspace(-4, 4, 100)
y = 1 / (np.sqrt(2 * np.pi) * np.exp(- x ** 2 / 2))
axs[0].plot(x, y, label='Standard normal distribution',
linewidth=2, color='red')
axs[0].set_xlabel('Value')
axs[0].set_ylabel('Probability density')
axs[0].set_title('Histogram of sample data and standard normal distribution')
axs[0].grid(True)
axs[0].legend()
# 绘制右边子图
x = np.linspace(-4, 4, 100)
y = 1 / (np.sqrt(2 * np.pi) * np.exp(- x ** 2 / 2))
axs[1].plot(x, y, label='Standard normal distribution',
linewidth=2, color='red')
axs[1].set_xlabel('Value')
axs[1].set_ylabel('Probability density')
axs[1].set_title('Standard normal distribution')
axs[1].grid(True)
axs[1].legend()
# 显示图片
plt.show()
```
其中,`fig, axs = plt.subplots(1, 2, figsize=(12, 6))`用于创建1行2列子图的图片,`axs[0]`和`axs[1]`分别表示左边和右边的子图。在左边子图中,`hist()`函数用于绘制直方图,`plot()`函数用于绘制标准正态分布的密度分布函数图像。在右边子图中,`plot()`函数直接绘制标准正态分布的密度分布函数图像。最后,使用`plt.show()`函数显示图片。
阅读全文