1、注释以及在Subplot上绘图
除标准的图表对象之外,你可能还希望绘制一些自定义的注释(比如文本、箭头或其他图形等)。
注释可以通过text、arrow和annotate等函数进行添加。text可以将文本绘制在图表的指定坐标(x, y),还可以加上一些自定义格式:
In [41]: ax.text(x, y, ‘Hello world!‘, family=‘monospace‘, fontsize=10)注解中可以既含有文本也含有箭头。例如,我们根据2007年以来的标准普尔500指数收盘价格(来自Yahoo! Finance)绘制一张曲线图,并标出2008年到2009年金融危机期间的一些重要日期。如下所示:
from datetime import datetime
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
data = pd.read_csv(‘ch08/spx.csv‘, index_col=0, parse_dates=True)
spx = data[‘SPX‘]
spx.plot(ax=ax, style=‘k-‘)
crisis_data = [
(datetime(2007, 10, 11), ‘Peak of bull market‘),
(datetime(2008, 3, 12), ‘Bear Stearns Fails‘),
(datetime(2008, 9, 15), ‘Lehman Bankruptcy‘)
]
for date, label in crisis_data:
ax.annotate(label, xy=(date, spx.asof(date) + 50),
xytext=(date, spx.asof(date) + 200),
arrowprops=dict(facecolor=‘black‘),
horizontalalignment=‘left‘, verticalalignment=‘top‘)
# Zoom in on 2007-2010
ax.set_xlim([‘1/1/2007‘, ‘1/1/2011‘])
ax.set_ylim([600, 1800])
ax.set_title(‘Important dates in 2008-2009 financial crisis‘)图像的绘制要麻烦一些。matplotlib有一些表示常见图形的对象。这些对象被称为块(patch)。其中有些可以在matplotlib.pyplot中找到(如Rectangle和Circle),但完整集合位于matplotlib.patches。
要在图表中添加一个图形,你需要创建一个块对象shp,然后通过ax.add_patch(shp)将其添加到subplot中。
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
rect = plt.Rectangle((0.2, 0.75), 0.4, 0.15, color=‘k‘, alpha=0.3)
circ = plt.Circle((0.7, 0.2), 0.15, color=‘b‘, alpha=0.3)
pgon = plt.Polygon([[0.15, 0.15], [0.35, 0.4], [0.2, 0.6]], color=‘g‘, alpha=0.5)
ax.add_patch(rect)
ax.add_patch(circ)
ax.add_patch(pgon)
说明:
如果查看许多常见图表对象的具体实现代码,你就会发现它们其实就是由块组装而成的。
2、将图表保存到文件
利用plt.savefig可以将当前图表保存到文件。该方法相当于Figure对象的实例方法savefig。例如,要将图表保存为SVG文件ÿ