# python matplotlib各种画图

## 1.引入matpltlib库

`matplotlib`是一种优秀的`python`数据可视化第三方库

```import matplotlib.pyplot as plt #plt是引入模块的别名

```

## 3.plot函数画图语法规则

plot函数参数：`plot([x],y,[format],**kwargs)`

## 4.折线图

from matplotlib import pyplot as plt

```#生成数据
#横坐标数据从2017到2022，第三个参数可控制步长，可写可不写
x = range(2017, 2022)
#y对应纵坐标的值
y1 = [49, 48, 45, 52, 50]
y2 = [60, 62, 61, 65, 63]
#生成图形
plt.title("LMY and her mother"s weight")
plt.xlabel("year")
plt.ylabel("kg")
plt.plot(x, y1, color="green", label="LMY")
plt.plot(x, y2, color="purple", label="mother")
plt.grid(alpha=0.5)
plt.legend(loc="upper right")
#显示图形
plt.show()

```

## 4.散点图

```from matplotlib import pyplot as plt
import numpy as np

# 生成数据
# 横坐标数据从2017到2022，第三个参数可控制步长，可写可不写
x = range(2017, 2022)
# y对应纵坐标的值
y1 = [49, 48, 45, 52, 50]
y2 = [60, 62, 61, 65, 63]
# 生成图形
plt.title("LMY and her mother"s weight")
plt.xlabel("year")
plt.ylabel("kg")
# 点的大小
area = np.pi*4**2
plt.scatter(x, y1, s=area, c="yellow", alpha=1)
plt.scatter(x, y2, s=area, c="blue", alpha=1)
plt.legend()
plt.yticks(())
plt.show()

```

## 5.直方图

```from matplotlib import pyplot as plt
import numpy as np

# 生成数据
# 横坐标数据从2017到2022，第三个参数可控制步长，可写可不写
x = [2017, 2018, 2019, 2020, 2021]
# y对应纵坐标的值
y1 = [49, 48, 45, 52, 50]
y2 = [60, 62, 61, 65, 63]
# 生成图形
plt.title("LMY and her mother"s weight")
plt.ylabel("frequency")
plt.xlabel("kg")
# 点的大小
plt.hist(y1, bottom=None, color="purple")
plt.hist(y2, bottom=None, color="pink")
plt.show()

# n, bins, patches = plt.hist(arr, bins=50, normed=1, facecolor="green", alpha=0.75)
"""
arr:需要计算直方图的一维数组
bins:直方图的柱数，可选项，默认为10
normed:是否将得到的直方图向量归一化，默认为0
facecolor:直方图颜色
alpha:透明度
"""
```

## 6.条形图

### 纵向

```from matplotlib import pyplot as plt
import numpy as np

arr = np.arange(2017, 2022)
x = [49, 48, 45, 52, 50]  # x轴
y = [2017, 2018, 2019, 2020, 2021]
rect = plt.bar(arr, x, width=0.5)
plt.title("LMY")
plt.xlabel("weight")
plt.ylabel("year")
plt.legend()

plt.show()

```

### 多条

```from matplotlib import pyplot as plt
import numpy as np

arr = np.arange(2017, 2022)
x1 = [49, 48, 45, 52, 50]  # x轴
x2 = [60, 62, 61, 65, 63]
y = [2017, 2018, 2019, 2020, 2021]
rects1 = plt.bar(arr, x1, 0.5, color="purple", label="LMY")
rects2 = plt.bar(arr, x2, 0.5, color="yellow", label="Mother", alpha=0.3)
plt.title("LMY and her mother"s weight")
plt.xlabel("weight")
plt.ylabel("year")
plt.legend()

plt.show()

```

## 7.饼图

```from matplotlib import patches, pyplot as plt
import numpy as np

label_list = ["49", "48", "45", "52", "50"]
size = [20, 20, 20, 20, 20]
# 各部分的颜色
color = ["red", "pink", "blue", "green", "purple"]
explode = [0, 0, 0.15, 0, 0]

patches, l_text, p_text = plt.pie(size, explode=explode, colors=color, labels=label_list,