# matplotlib数据可视化基础知识 ## 学习目标 1. 了解有关Matplotlib的常识 2. 掌握Matplotlib绘图的基本要素 ---- ## 学习内容 ### 关于Matplotlib + Matplotlib 是 Python 的一个扩展程序库(Mat致敬MatLab,plot绘制图形,lib表明它是一个库) + 提供了大量的绘图组件用于绘制图表,图表可以保存成多种格式 + 包含一个互动的图表控制平台,可以跨平台方便的修改图表样式 ### 怎样绘制一幅简单的图表? 读代码,认真图表绘制过程。 ```python >>> import numpy as np >>> from matplotlib import pyplot as plt >>> x = np.arange(1,11) >>> y = 2 * x + 5 >>> plt.title("Matplotlib demo") >>> plt.xlabel("x axis caption") >>> plt.xlim(0,10) >>> plt.xticks(np.arange(0,10)) >>> plt.ylabel("y axis caption") >>> plt.plot(x,y) >>> plt.show() ``` 通过上述代码对比绘制生成的图形,你读懂了什么? 可能产生的几个问题: 1. plt是什么? 2. plt.title是用来设置什么的? 3. xlable、ylable是用来做什么的? 4. xlim与xticks是用来设定什么的? 5. plot和show的作用是什么? 解决了以上几个疑问,则绘制一份简单的图表就不存在问题了。 ### 怎样让图表内容更丰富? 对于上述代码功能的进一步追问: 1. 怎样在图表中显示中文? 2. 多个图形显示时,怎样设置图例? 3. 怎样保存已绘制出的图像? 以下三段代码片断用以解决上述问题: 代码1: ```python import matplotlib zhfont1 = matplotlib.font_manager.FontProperties(fname="simhei.ttf") plt.title("绘图示例", fontproperties=zhfont1) ``` 代码2: ```python l1,=plt.plot(x,y) l2,=plt.plot(a) plt.legend(handles = [l1, l2,], labels = ['a', 'b'], loc = 'best') ``` 代码3: ```python plt.savefig(“path-of-file”) ``` **片断小结** 读以下代码,描述生成结果,并上机实践验证。 ```python import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 2, 100) plt.plot(x, x, label='linear') plt.plot(x, x**2, label='quadratic') plt.plot(x, x**3, label='cubic') plt.xlabel('x label') plt.ylabel('y label') plt.title("Simple Plot") plt.legend() plt.show() ``` **小练习** 在一个直角坐标系中显示x2与2x的图像。 要求: 1. 设置标题为about X 2. 设置图例 3. 设置图形的表值范围:x轴-4~4,y轴-20~20 4. 效果如下图所示,最后保存到c盘根目录下 ### 怎样让图表更专业? #### 怎样设置不同的线型 通过在plt.plot()中增加linestyle参数来实现。对于linestyle的值有这样几种: | 符号 | 线型 | | : | .... | | -. | -.-.-. | | - - | - - - | | - | --- | 例如: ```python plt.plot(x,y1,linestyle=':',label='x2') ``` #### 怎样设置多个图像合在一起显示 **使用subplot函数** subplot()函数有三个参数,分别表示这样的含义。第1个参数表示图像分为几行,第2个参数表示图像分为几列,第3个参数表示显示在第几个位置。 例如: ```python plt.subplot(121) plt.plot(x,y1,linestyle=':',color='orange',label='x2') plt.legend() plt.subplot(122) plt.plot(x,y2,linestyle='-.',label='2x') plt.legend() ``` 就会显示下图的示例。 ![](https://i.postimg.cc/cLKf761Z/image.png) #### 怎样设置网格 给图像设置网格可以让读图的人获得更为精准的数据。在matplotlib中设置网络也是非常容易的。设置方法,在显示前加上以下语句即可。 ```python plt.grid(True) ``` #### 怎样设置文本标签 在图像上特定的地方进行文本标注有利于图像的解读。给图像加上plt.text()函数,就可以在指定位置设置相应的字符标签。 text()函数中包含以下几个参数,分别是(x,y,s)。 x和y表示text在坐标轴内显示的位置,s表示要显示的内容。 如下图所示: ![](https://i.postimg.cc/50JvM3BN/image.png)