Matplotlib 是公认的在python中最好的图像绘制库,Matplotlib 的功能非常的强大,主流的图表格式在Matplotlib 都能够找到,Matplotlib 是一个开源的,官方网站在:https://matplotlib.org/ 下,也有着非常完善的代码例子:https://matplotlib.org/gallery/index.html。Matplotlib 整个体系看起来也非常的严谨,可方便的进行学习和查找。
安装Matplotlib
windows下安装Matplotlib 可以在 https://github.com/matplotlib/matplotlib/downloads 进行下载安装,Matplotlib 安装之前先确保 Numpy 已经存在。 当然所有的平台下可以使用pip进行安装。
pip install matplotlib
也推荐使用pip 进行安装,他会帮助下载一些需要的依赖项, matplotlib 比较大,需要下载一定的时间。
matplotlib.pyplot 是 matplotlib 中一个重要的绘图库,里面包含着大部分的绘图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']
>>>
对图表进行说明:
title, xlabel, ylabel 分别 说明标题,x轴说明,y轴说明。
text() 可以在图中的任意位置添加文字,并支持LaTex语法。
annotate 推特征数据进行说明,用 一个箭头引出,并用文字进行说明。因此需要两个坐标,箭头位置和文字位置。
需要注意的是,如果出现了中文乱码的话,需要进行相应的设置:
#显示中文配置
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus']=False
对坐标进行控制:
xlim,ylim 分别进行对x轴和y轴坐标进行控制,把图表显示在相应的位置上。
xticks , yticks :有的时候需要特殊化坐标,提高坐标的可读性。
使用上述的配置对图片进行控制:
import matplotlib.pyplot as plt
#显示中文配置
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_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.unicode_minus']=False