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