# matplotlib数据可视化图像绘制
## 学习目标
1. 了解散点图的意义,并学会使用scatter绘制散点图
2. 深入掌握线形图的绘制方法
----
## 学习内容
### 散点图的绘制
#### 散点的概念
**什么是散点图**
散点图是一种利用坐标点(散点)的分页形态反映特征间的统计关系的一种图形。值由点在图表中的位置表示,类别由图表中的不同标记表示,通常用于比较跨类别的数据。
**散点图的意义是什么**
散点图一般可以提供以下两类关键信息。
+ 特征之间是否存在数值或数量的关联趋势,关联趋势是线性还是非线性的
+ 如果某一个点或某几个点偏离大多数点,则这些点是离群值。通过散点图可以一目了然。
#### 绘制散点图
**scatter函数释义**
使用scatter()函数,可以绘制散点图像,scatter()函数常用的参数有以下几个。
| 参数 | 说明 |
| x,y | 接收要描绘的点的值 |
| s | 设置要描绘的点的大小,可以是一个数组 |
| c | 设置要描绘点的颜色,可以是一个数组 |
| marker | 接收一个string值,表示绘制的点的类型 |
| alpha | 接收一个0~1之间的小数,表示点的透明度 |
**scatter函数使用**
```python
import matplotlib.pyplot as plt
import numpy as np
n = 1024
X = np.random.normal(0, 1, n)
Y = np.random.normal(0, 1, n)
T = np.arctan2(Y,X)
plt.scatter(X, Y, s=25, c=T, alpha=.5)
plt.xlim(-1.5, 1.5)
plt.xticks(())
plt.ylim(-1.5, 1.5)
plt.yticks(())
plt.show()
```
以上代码将绘制出以下图像。
![](https://i.postimg.cc/k4cCgxHy/image.png)
**scatter函数小练习**
练习目标:通过对鸢尾花数据集中萼片和花瓣数据的分析以散点图的形式完成下列关系的呈现
1. 萼片(sepal)和花瓣(petal)的大小关系
2. 不同种类(species)鸢尾花萼片和花瓣的大小关系
[[https://zhuyalin.cn/lesson/data/iris.csv|数据集下载]]
### 线形图的绘制
回忆上一节绘图基础中plot的使用方法,思考绘制下图。
![](https://i.postimg.cc/QNyp8dF2/image.png)
对比下图,总结与已绘制出的线形图的不同之处。
![](https://i.postimg.cc/wBS1FGRf/image.png)
不同之处:
+ 不同点一:坐标轴移动了
+ 不同点二:坐标轴上的数值是自定义的
**坐标轴移动解决方法**
```python
ax = plt.gca() #gca是get current axis
ax.spines['right'].set_color('none') #设置右边颜色无
ax.spines['top'].set_color('none') #设置顶边颜色无
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0)) #设置底边在0上
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
```
**自定义坐标值**
```python
plt.xticks([-2*np.pi,-np.pi,0,2,4],['$-2\pi$','$-\pi$',0,2,4])
```
**再次进阶**
对比下图,又有哪些新变化?
![](https://i.postimg.cc/QCDHZKbc/image.png)
+ 在图像上指定了一点 (scatter)
+ 过该点作出了一条垂直的线 (plot)
+ 指向该点的函数表达式注释
对于注释的实现,除了上一次课使用的text()函数外,还可以使用以下方法。
```python
plt.annotate(s="$b=4-(%s-2)^2 $"% a1, fontsize=16, xytext=(+4, +2),xy=(a1, b1), arrowprops=dict(arrowstyle="->"))
```
语句说明:
+ s: 注释的内容,一段文字;
+ xytext: 这段文字所处的位置;
+ xy: 箭头指向的位置;
+ arrowprops: 通过arrowstyle表明箭头的风格或种类。
----
## 拓展延伸
注释中公式的表达方式:[[https://www.zybuluo.com/codeep/note/163962|点击这里]]