使用 matplotlib 遇到的几个问题

这周在用 matplotlib 画几张图。数据 csv 下载自 ECBStat 和 FRED。

1
2
import pandas as pd
import matplotlib as plt

首先是解决字符串转日期型的问题。我希望将日期作为横轴,而且显示合理。

使用 datetime

1
2
3
4
5
6
from datetime import datetime
x = datetime.strptime(d, '%Y-%m-%d').date() for d in example.date

# example.date 是我的 example.csv 文件中日期对应列。

plt.plot(x,y)

更多时间处理参数,详见下方链接。

自动格式化:

1
plt.gcf().autofmt_xdate()

我希望定位一个具体日期,并用竖线标识。 这里用到pandas把我希望的具体日期转为时间戳。

1
plt.axvline(pd.Timestamp('2014-06-30'), color='#000')

https://i.loli.net/2021/11/12/lfxb2TMN9ukKz6t.png

我希望在一张图(单个文件)中同时展示多个图表,既可以用 subplot,也可以用 GridSpec

1
2
3
4
5
plt.subplot(211)
plt.plot(time, totalb)

plt.subplot(212)
plt.plot(time, conb)

也可以:

1
2
3
4
5
6
plt.GridSpec(2, 1, wspace=.25, hspace=.25)
ax1 = plt.subplot(grid[0,0:1])
ax1.plot(time, totalb)

ax2 = plt.subplot(grid[1,0:1])
ax2.plot(time, conb)

如何定义具体位置或查看更多实例,请见 matplotlib.pyplot.subplotmatplotlib.gridspec.GridSpec

https://i.loli.net/2021/11/12/DJGWkYgR4QjSLfI.png

https://i.loli.net/2021/11/12/4hHlSIj7zRO3Cng.png

参考了实例 Axes Zoom Effect