这周在用 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')
|
![hicp 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.subplot 和 matplotlib.gridspec.GridSpec。
![credit https://i.loli.net/2021/11/12/DJGWkYgR4QjSLfI.png]()
![rates https://i.loli.net/2021/11/12/4hHlSIj7zRO3Cng.png]()
参考了实例 Axes Zoom Effect。