标题中的英文首字母大写比较规范,但在python实际使用中均为小写。
2018年7月30日笔记
作者的集成开发环境是jupyter,Python版本为3.6
建议阅读本文的读者安装anaconda3,里面包含了jupyter、python3.6和matplotlib库
下载链接: https://pan.baidu.com/s/1kKCvpXAlTdRri4lSP6gykA 密码: pygy
1.简介
Matplotlib是一个Python的绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。这个绘图系统操作起来相对复杂,但是Matplotlib的复杂给其带来了很强的定制性。其具有面对对象的方式以及pyplot的经典高层封装。
Matplotlib是基于Python语言的开源项目,旨在为Python提供一个数据绘图包。用户在熟悉了核心对象之后,就可以轻易的定制图像。
由John Hunter发起(1968-2012)发起,John由于癌症于2012年过世。感谢John对于matplotlib做出的贡献。
![10345471-9ecc71ecb100c4c2.png](https://i-blog.csdnimg.cn/blog_migrate/de86d6921ae4ce193be18fcd35ddf40c.webp?x-image-process=image/format,png)
函数式绘图和面对对象绘图:
1.函数式绘图,参考了matlab里面的绘图函数语法,简单易上手
2.面对对象绘图,更懂matplotlib底层架构,有更多的功能
2.Matplotlib快速预览
在matplotlib中,整个图像为一个Figure对象,在Figure对象中可以包含一个或者多个Axes对象。
每个Axes对象。每个Axes对象都是一个拥有自己坐标系统的绘图区域。
![10345471-edaf8d548ccd4fb3.png](https://i-blog.csdnimg.cn/blog_migrate/00f31e1808364f12c6262af4b72e4f1d.webp?x-image-process=image/format,png)
一个Figure可以理解为一个画布或装图片的容器,是绘图的承载对象,画布上有很多绘图方法可供使用。title为标题,axis为坐标轴,label为坐标轴标注,tick为刻度线,tick label为刻度注释。
![10345471-276518e6e064a12f.png](https://i-blog.csdnimg.cn/blog_migrate/895bed81e8bf7013614168709f64e652.webp?x-image-process=image/format,png)
调用figure创建一个绘图对象:plt.figure(figsize=(8,4))
也可以不创建绘图对象直接调用接下来的plot函数直接绘图,matplotlib会为我们自动创建一个绘图对象。
如果需要同时绘制多个图表的话,可以给figure传递一个参数制定图表的序号,如果所指定序号的绘图对象已经存在的话,将不创建新的对象,而只是让它成为当前绘图对象,
figsize:制定绘图对象的宽度与高度,单位为英寸;
dpi:制定绘图对象的分辨率,每英寸多少个像素,缺省值为80.因此本例中所创建的图表窗口的宽度为8 80=640像素,高度为480像素。
import matplotlib.pyplot as plt
plt.figure(figsize=(8,4))
x = [1,2,3]
y = [5,7,4]
plt.plot(x,y)
plt.show()
如果出现画出多张图的情况,需要更新matplotlib到最新版本,更新命令:pip install matplotlib
如果出现更新慢的问题,需要对pip换源,相关链接:https://www.cnblogs.com/walk1314/p/7076853.html
换源以后下载速度提高到2M/s。
![10345471-622427133a43941f.png](https://i-blog.csdnimg.cn/blog_migrate/eec56c8e2ea8ed50d45ac9c8f8484c6d.webp?x-image-process=image/format,png)
3.美化图表-为图表加上图例、标题和标签
首先,2行代码解决编码问题:
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
加上图例、标题、标签3中效果的代码如下:
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
x = [1,2,3]
y1 = [5,7,4]
y2 = [10,14,12]
plt.figure(figsize=(8,4))
plt.plot(x,y1,label='第一条线')
plt.plot(x,y2,label='第二条线')
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('为图表加入\n图例、标题和标签')
plt.legend()
plt.show()
plt.legend()作用是显示图例,图例是下图中红色方框所指内容。