matplotLib入门

来源:互联网 发布:武林外传 知乎精华 编辑:程序博客网 时间:2024/05/22 00:33

matplotLib入门

绘图是数据分析中重要的任务之一。

matplotlib API 入门

1.matplotlib API函数都位于matplotlib.pyplot模块中,通常的引入约定是:

import matplotlib.pyplot as plt

Figure和Subplot

matplotlib的图像都位于Figure中,如下方法创建一个新的Figure:

fig = plt.figure()fig.show()

这时候会弹出一个空窗口。plt.figure()有一些选项,比如figsize,可以确保当图片保存到磁盘时具有一定的大小和纵横比。通过plt.gcf()可以得到当前Figure的引用。

不能通过空Figure画图,必须用add_subplot创建一个或多个subplot才行。

ax1 = fig.add_subplot(2, 2, 1)

上面代码的意思是:图像应该是2 * 2的,且当前选中的是4个subplot的第一个(编号从1开始)。接着创建两个,

ax2 = fig.add_subplot(2, 2, 2)ax3 = fig.add_subplot(2, 2, 3)fig.show()

图像如下:

发出一条绘图命令:

plt.plot([1.5, 3.5, -2, 1.6])

会得到如下效果

from numpy.random import randnplt.plot(randn(50).cumsum(), 'k--')

‘k–’是一个线性选项,告诉matplotlib绘制黑色虚线图。上面那些由fig.add_subplot()所返回的对象是AxesSubplot对象,直接调用它们的实例方法就可以在其他空着的格子里面画图了。

plt.subplots()是一个更为简单的方法,他可以创建一个新的Figure,并且返回一个含有已创建的subplot对象的Numpy数组。

 fig,axes = plt.subplots(2,3)In[4]: axesOut[4]: array([[<matplotlib.axes._subplots.AxesSubplot object at 0x049A3190>,        <matplotlib.axes._subplots.AxesSubplot object at 0x04DD68F0>,        <matplotlib.axes._subplots.AxesSubplot object at 0x04E5C710>],       [<matplotlib.axes._subplots.AxesSubplot object at 0x04E97D90>,        <matplotlib.axes._subplots.AxesSubplot object at 0x0738DDB0>,        <matplotlib.axes._subplots.AxesSubplot object at 0x0741E4D0>]], dtype=object)

这是非常实用的,可以轻松地对axes进行索引,就像二维数组一样。例如,axes[0,1].
还可以通过sharex和sharey指定subplot应该具有相同的X轴或Y轴。在比较相同范围的数据时,也是非常实用的。

pyplot.subplots的选项:

参数          说明nrows       subplot的行数ncols       subplot的列数shareX      所有subplot应该使用相同的X轴刻度(调节xlim将会影响所有subplot)shareY      所有subplot应该使用相同的Y轴刻度(调节ylim将会影响所有subplot)subplot_kw  用于创建各subplot的关键字字典**fig_kw    创建figure时的其他关键字,如plt.subplots(2,2,figsize=(8,6))

调整subplot的间距

默认情况,matplotlib会在subplot外围留下一定的边距,并在subplot之间留下一定的间距。间距跟图像的高度和宽度有关。利用Figure的subplot_adjust方法可以轻而易举地修改间距,此外,它也是一个顶级函数:

subplots_adjust(left=None, bottom=None, right=None, top=None,wspace=None, hspace=None)

wspace和hspace用于控制宽度和高度的百分比,可以用作subplot之间的边距。

颜色、标记和线型

matplotlib的plot函数接受一组X和Y的坐标,还可以接受一个表示颜色和线型的字符串缩写。例如,根据X和y绘制绿色虚线,执行如下代码:

ax.plot(x,y,'g--)

通过下面更为明确的方式也能达到同样的效果:

ax.plot(x,y,linestyle='--',color='g')

完整的linestyle列表请参见plot的文档。

线形图还可以加上一些标记(marker),以强调实际的数据点。由于matplotlib创建的是连续的线形图(点与点之间插值),因此有时可能不太容易看出真实数据点的位置。标记也可以放到格式字符串中,但标记类型和线型必须放在颜色的后面。

plt.plot(randn(30).cumsum(), 'ko--')

还可以写成更明确的形式:

plt.plot(randn(30).cumsum(), color='k', linestyle='dashed', marker='o')

结果如下所示:

![](http://i.imgur.com/7XKznxp.png)

注解

注解可以通过text,arrow和annotate等函数进行添加。text可以将文本绘制在图表的指定坐标(x,y),还可以添加一些自定义格式。

ax.text(x,y,'hello world',family='monospace',fontsize=10)

散布图

散布图是观察两个一维数据序列之间关系的有效手段。matplotlib的scatter方法是绘制散布图的主要方法。

利用plt.scatter()即可轻松绘制一张简单的散布图.

0 0
原创粉丝点击