Matplotlib绘图库入门(一):pyplot绘图基础

Matplotlib 是公认的在python中最好的图像绘制库,Matplotlib 的功能非常的强大,主流的图表格式在Matplotlib 都能够找到,Matplotlib 是一个开源的,官方网站在:https://matplotlib.org/ 下,也有着非常完善的代码例子:https://matplotlib.org/gallery/index.htmlMatplotlib 整个体系看起来也非常的严谨,可方便的进行学习和查找。

安装Matplotlib

windows下安装Matplotlib 可以在 https://github.com/matplotlib/matplotlib/downloads 进行下载安装,Matplotlib 安装之前先确保 Numpy 已经存在,可以参考:http://www.bugingcode.com/blog/20.html。 当然所有的平台下可以使用pip进行安装。

pip install matplotlib

也推荐使用pip 进行安装,他会帮助下载一些需要的依赖项, matplotlib 比较大,需要下载一定的时间。

matplotlib.pyplotmatplotlib 中一个重要的绘图库,里面包含着大部分的绘图api。

从plot开始了解绘图相关项

在基础绘图中,最常见的是线条的绘制,先看看最简单的线条:

import matplotlib.pyplot as plt
y = [3,7,5,8]
plt.plot(y)
plt.show()

显示的图形是如下:

这是简单的线条图形,这里有两个需要解释的是,plot 函数的参数中,没有给出x坐标,就默认为从0开始,步长为1,长度跟y的长度一致。第二个是plot 应该是画点的,为何画出来的是直线?在plot 参数缺少的情况下,默认的参数是'b-',亦即蓝色的直线。如下是常见的线条格式配置:

线条颜色

常见的颜色表格,可以快速的进行查询:

标示 颜色
b 蓝色
r 红色
c 青色
g 绿色
m 洋红色
y 黄色
k 黑色
w 白色

下面是个更多的颜色:

https://matplotlib.org/examples/color/named_colors.html

线条样式

常见的线条样式:

标示 描述
'-' 实线
'--' 破折线
'-.' 点划线
':' 虚线
'o' 圆圈
'+' 加号

更多的标示可以参看官方网站:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html#matplotlib.pyplot.plot

清楚了这些参数以后画器自己想要的线条就容易得多了:

import matplotlib.pyplot as plt

x = [x for x in range(1,5)]
y = [3,7,5,8]
plt.plot(x,y,'r--')
plt.show()

红色的破折线:

plot 相关的参数项可以参考官方的说明:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.plot.html#matplotlib.pyplot.plot

对图表的相关控制和说明

对坐标和图像的控制,matplotlib.pyplot 也有非常多的选项,这里列举一下几个比较常用:

设置图表样式

对图表样式多样化的支持也是 matplotlib 的一大特色,轻松的使用已经设计好的样式,很容易就能够美化所绘制的图表。

获取系统支持所有的自带样式:

>>> print plt.style.available
[u'seaborn-darkgrid', u'Solarize_Light2', u'seaborn-notebook', u'classic', u'seaborn-ticks', u'grayscale', u'bmh', u'seaborn-talk', u'dark_background', u'ggplot', u'fivethirtyeight', u'_classic_test', u'seaborn-colorblind', u'seaborn-deep', u'seaborn-whitegrid', u'seaborn-bright', u'seaborn-poster', u'seaborn-muted', u'seaborn-paper', u'seaborn-white', u'fast', u'seaborn-pastel', u'seaborn-dark', u'seaborn', u'seaborn-dark-palette']
>>>

对图表进行说明

titlexlabelylabel 分别 说明标题,x轴说明,y轴说明。

text() 可以在图中的任意位置添加文字,并支持LaTex语法。

annotate 推特征数据进行说明,用 一个箭头引出,并用文字进行说明。因此需要两个坐标,箭头位置和文字位置。

需要注意的是,如果出现了中文乱码的话,需要进行相应的设置:

#显示中文配置
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.uni_minus']=False

对坐标进行控制

xlimylim 分别进行对x轴和y轴坐标进行控制,把图表显示在相应的位置上。

xticks , yticks :有的时候需要特殊化坐标,提高坐标的可读性。

使用上述的配置对图片进行控制:

import matplotlib.pyplot as plt

#显示中文配置
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.uni_minus']=False

plt.style.use("ggplot")

plt.title(u"阿猫学编程 - 线条配置")

x = [x for x in range(2,10,2)]
y = [3,7,5,8]

plt.xlim(0,10)
plt.ylim(0,10)
plt.text(8.5, 8, r'y=f(x)')

plt.plot(x,y,'r--',label=u"销售额")

plt.legend(loc='upper left')

plt.plot(4,7,'ro')
plt.annotate(u"销售额", xy=(4, 7), xytext=(5, 8),arrowprops=dict(facecolor='black', shrink=0.05),)


plt.xlabel(u'x轴')
plt.ylabel(u'y轴')
plt.show()

得到如下的图片:

如果出现了 KeyError: u'axes.uni_minus is not a valid rc parameter. See rcParams.keys() for a list of valid parameters.'的错误,可以注解掉:

#plt.rcParams['axes.uni_minus']=False

转载请标明来之:http://www.bugingcode.com/

更多教程:阿猫学编程

Matplotlib绘图库入门 系类文章