8.创建一个 2 X 1子图绘图模式,每个子图上依次绘制 NumPy库1000个正态随机数(randn)的累计和,图形颜色均为黑色,线形分别为实线和点线。x轴共用坐标轴。
时间: 2023-06-08 18:09:01 浏览: 113
利用matplotlib+numpy绘制多种绘图的方法实例
好的,您的第一个问题是如何创建一个 2x1 的子图并绘制 NumPy 库中的 1000 个正态随机数(randn)的累计和,线条颜色均为黑色,线形分别为实线和点线,并共用坐标轴。
下面是 Python 代码来实现这个问题:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成 1000 个正态随机数
data = np.random.randn(1000)
# 创建一个 2x1 的子图
f, axarr = plt.subplots(2, 1)
# 在第一个子图上绘制实线图和累积和
axarr[0].plot(data.cumsum(), color='black', linestyle='-')
# 在第二个子图上绘制点线图和累积和
axarr[1].plot(data.cumsum(), color='black', linestyle=':')
# 共享 x 轴
plt.subplots_adjust(hspace=0.4) # 调整子图之间的垂直间距
plt.setp([a.get_xticklabels() for a in f.axes[:-1]], visible=False) # 隐藏上面的子图的 x 轴标签
plt.show() # 显示绘图结果
```
代码解释:
首先,我们使用 NumPy 库中的 ``np.random.randn(1000)`` 函数生成了 1000 个正态随机数,存储在数据变量 ``data`` 中。接着,我们使用 ``matplotlib.pyplot.subplots`` 函数创建了一个 2x1 的子图,并将返回的子图对象存储在 ``f`` 和 ``axarr`` 变量中。然后,我们在第一个子图上绘制实线图和累计和,使用黑色颜色和实线样式,使用 ``data.cumsum()`` 函数计算数值的累计和。接着,在第二个子图上绘制点线图和累计和,使用黑色颜色和点线样式,也使用 ``data.cumsum()`` 函数计算数值的累计和。最后,我们共享 x 轴,使用 ``plt.subplots_adjust`` 函数调整子图之间的垂直间距,并使用 ``plt.setp`` 函数隐藏上面的子图的 x 轴标签。最后,使用 ``plt.show()`` 函数显示绘图结果。
希望这个回答对您有所帮助!
阅读全文