matplotlib数据可视化入门-python

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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章