您的位置:首页 > 编程语言 > Python开发

matplotlib数据可视化入门-python

2016-10-10 14:51 911 查看
matplotlib是matlab的python api接口,可以制作出高质量的2D以及3D图形。操作简单,只需几行代码就可以搞定大部分的数据可视化需求,实乃幸事。本文假设我们已经安装了必备的库。

一、创建figure和axes对象

import matplotlib.pyplot as plt
import pandas as pd
#创建figure对象,默认我们可以不用传入任何参数
fig = plt.figure()
#创建axes对象
ax = fig.add_subplot(1, 1, 1)


我们使用上面的两行代码就可以创建出一个画图的面板,就像打开windows下面的画图软件一模一样,如下图所示:



ax = fig.add_subplot(1, 1, 1) 这句代码的意思就是我们将figure对象分成一行一列,也就是只有一个画图框,然后我们选中了这个画图框。

可以简单的画一条线试试:

二、制作图形

ax.plot(range(5))


上面的代码就可以在画框中画出一条优美的蓝色对角线。

接下来,我们还可以设置图表的名称,图表的x轴刻度,y轴的刻度,图例等等。

ax.set_title(u'这里是标题')
ax.set_xlabel(u'这里是x轴的名称')
ax.set_ylabel(u'这里是y轴的名称')


运行上面代码我们会看到下面的图形:



发现并不能显示中文,原因是matplotlib在默认情况下默认是不会显示中文的,需要我们进行相应的设置,设置方法如下:

import matplotlib.pyplot as plt
import matplotlib
import pandas as pd
#在导入matplotlib时就设置字体
font = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\STZHONGS.TTF')
#创建figure对象,默认我们可以不用传入任何参数
fig = plt.figure()
#创建axes对象
ax = fig.add_subplot(1, 1, 1)


我在写这段代码的时候是在windows环境下的。windows下的字体都在c:\windows\fonts\这个目录下,进入这个目录,随便选一个中文字体就可以,非常的简单。

接下来,在添加中文的代码中也做一些调整:

import matplotlib.pyplot as plt
import matplotlib
import pandas as pd
#在导入matplotlib时就设置字体
font = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\STZHONGS.TTF')
#创建figure对象,默认我们可以不用传入任何参数
fig = plt.figure()
#创建axes对象
ax = fig.add_subplot(1, 1, 1)
ax.plot(range(5))
ax.set_title(u'这里是标题', fontproperties=font)
ax.set_xlabel(u'这里是x轴的名称', fontproperties=font)
ax.set_ylabel(u'这里是y轴的名称', fontproperties=font)


上面的代码运行的结果如下所示:



中文非常完整的显示了出来,与我们预期的结果一模一样。

三、制作图例

一般情况下,我们会在同一个画图板中制作多个图形,已进行数据之间的比较,比如下图所示:



在图中我们画了两条线,颜色各不相同。可是,上面并没有明显的指出每条线代表的是什么意思。这时,我们就需要用到图例。图例的就是对每种不同颜色线条的说明,如下图所示:



在图表的右上角有了标注,那就是图例,指出了每种颜色的线条分别属于哪种标签,简洁明了。完整代码如下所示:

import matplotlib.pyplot as plt
import matplotlib
import pandas as pd
#在导入matplotlib时就设置字体
font = matplotlib.font_manager.FontProperties(fname='C:\Windows\Fonts\STZHONGS.TTF')
#创建figure对象,默认我们可以不用传入任何参数
fig = plt.figure()
#创建axes对象
ax = fig.add_subplot(1, 1, 1)
#其中的label关键词参数就是图例
ax.plot(range(5), label='one')
ax.plot(range(5, 0, -1), label='two')
ax.set_title(u'这里是标题', fontproperties=font)
ax.set_xlabel(u'这里是x轴的名称', fontproperties=font)
ax.set_ylabel(u'这里是y轴的名称', fontproperties=font)
#显示出图例,并标明位置
ax.legend(loc='best')


就这样,其实非常的简单。

四、添加图形注解

在制作图形的时候会遇到这样的情况,我们需要对图形上的某一个位置添加解释,废话不说先上图:



图表中的箭头以及文字就是对某一个坐标的注解,这非常的有用。实现起来是非常简单的:

ax1.annotate(s=u'我就是要指向这里',
xy=(x,y),
xytext=(x, y),
arrowprops={'arrowstyle':'fancy'},
fontproperties=font,
fontsize=10)


我们只需要axes对象的annotate()方法就可以实现。参数说明:

s:我们需要注解的文字,在python中前面一定要加一个U,字符串表示

xy:需要我们箭头指向的点的(x, y)坐标,一个二元组对

xytext:注解文字所在的(x, y)的坐标,一个二元组对

arrowprops:字典,里面可以选择我们喜欢的连接两个坐标点的图形

到此为止,基本功能我们都已经实现,图标的标题,x轴(y轴)的刻度和名称,图例,文字注解。这已经可以满足我们大部分的需求。

更多的内容大家可以参考matplotlib的官方资源:http://matplotlib.org/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息