TA的每日心情 | 无聊 2024-7-12 13:16 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]测试小兵
|
这一章要用Jupyter notebook进行可交互式的绘图,需要执行下面的语句,这样就可以直接在Notebook里绘图了。
%matplotlib notebook #jupyter magic这是jupyter magic,详情可上网搜索
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
1
2
3
4
1 Figures and Subplots(图和子图)
在matplotlib中画的图,都是在Figure对象中的。可以用plt.figure创建一个
fig = plt.figure()
ax1 = fig.add_subplot(2, 2, 1)
ax2 = fig.add_subplot(2, 2, 2)
ax3 = fig.add_subplot(2, 2, 3)
fig
1
2
3
4
5
有一个注意点,在使用Jupyter notebook的时候,绘图可能在一个cell之后被重置,所以对于一些复杂的绘图,必须把绘图命令全部放在一个notebook cell中。
因为创建一个带有多个subplot的figure是很常见的操作,所以matplotlib添加了一个方法,plt.subplots,来简化这个过程。这个方法会创建一个新的figure,并返回一个numpy数组,其中包含创建的subplot对象:
f, axes = plt.subplots(2, 3)
1
f返回的是图
axes返回的是索引
2 Colors, Markers, and Line Styles(颜色,标记物,线样式)
fig = plt.figure()
plt.plot(np.random.randn(30).cumsum(), color='k', linestyle='dashed', marker='o')
plt.legend(loc='best')
1
2
3
3 Ticks, Labels, and Legends(标记,标签,图例)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(np.random.randn(1000).cumsum(),label='one')
ticks = ax.set_xticks([0, 250, 500, 750, 1000])
labels = ax.set_xticklabels(['one', 'two', 'three', 'four', 'five'], rotation=30, fontsize='small')
ax.set_title('My first matplotlib plot')#图标题
ax.set_xlabel('Stages')#x轴标签
ax.legend(loc='best')#图例
1
2
3
4
5
6
7
8
4 Annotations and Drawing on a Subplot(注释和在subplot上画图)
from datetime import datetime
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
data = pd.read_csv('../examples/spx.csv', index_col=0, parse_dates=True)
spx = data['SPX']
spx.plot(ax=ax,style='k-')
# DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False, #sharex=None, sharey=False, layout=None, figsize=None, use_index=True, #title=None, grid=None, legend=True, style=None, logx=False,
#logy=False, loglog=False, xticks=None, yticks=None, #xlim=None,ylim=None, rot=None, fontsize=None, colormap=None, #table=False, yerr=None, xerr=None, secondary_y=False, #sort_columns=False, **kwds)
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) + 75),
arrowprops=dict(facecolor='black', headwidth=4, width=2, headlength=4),
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 the 2008-2009 financial crisis')
spx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
5 Saving Plots to File(把图保存为文件)
保存的文件类型通过文件名后缀来指定。即如果使用 .pdf做为后缀,就会得到一个PDF文件。这里有一些重要的设置,作者经常用来刊印图片:
dpi,控制每英寸长度上的分辨率
bbox_inches, 能删除figure周围的空白部分
比如我们想要得到一幅PNG图,有最小的空白,400 DPI,键入:
---------------------
|
|