Matplotlib介绍
Matplotlib 能够创建多数类型的图表,如条形图,散点图,条形图,饼图,堆叠图,3D 图和地图图表。
安装pip install matplotlib
导入模块import matplotlib.pyplot as plt
绘制第一个图
.plot(x,y)接受两个参数,分别是x坐标,y坐标。下面有三个坐标,即(1,7),(2,8),(3,9)
1 2 3
| import matplotlib.pyplot as plt plt.plot([1,2,3],[7,8,9]) plt.show()
|
Pycharm运行

如果你是用IDLE打开

那么这里会有一些按钮可以使用,摸索一下很快就能了解作用。
图例、标题和标签
在这里,我们要了解一个概念,轴域(Axes) 就是两条坐标轴围成的区域。
这里中文标题会出现问题,必须加一条语句来显示中文。
1
| plt.rcParams["font.sans-serif"] = ["SimHei"]
|
如果 负号 不显示,那再加一条语句。
1
| plt.rcParams["axes.unicode_minus"] = False
|
如果加了上述语句,还是无效,那就是系统缺少这个字体,需要下载对应的字体。
图例、标题和标签展示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]
x1 = [1,2,3] y1 = [5,7,4]
x2 = [1,2,3] y2 = [10,14,12]
plt.plot(x1,y1,label='1') plt.plot(x2,y2,label='2')
plt.xlabel('学号') plt.ylabel('得分')
plt.title('成绩分布') plt.legend() plt.show()
|
使用plt.xlabel
和plt.ylabel
,我们可以为这些相应的轴创建标签。 接下来,我们可以使用plt.title
创建图的标题,然后我们可以使用plt.legend()
生成默认图例。 结果图如下

条形统计图和直方图
条形图
使用xticks与yticks(设置坐标轴刻度)、xlabel与ylabel(设置坐标轴标签)、title(标题)、legend(图例)、xlim与ylim(设置坐标轴数据范围)、grid(设置网格线)等命令来装饰图形。
plt.bar
为我们创建条形图。 如果你没有明确选择一种颜色,那么虽然做了多个图,所有的条看起来会一样。 你可以在任何类型的绘图中使用颜色,例如g
为绿色,b
为蓝色,r
为红色,等等。 你还可以使用十六进制颜色代码,如#191970。
具体可以查看这里:常用十六进制颜色对照表代码查询 - 緈諨の約錠 - 博客园 (cnblogs.com)
1 2 3 4 5 6 7 8 9 10 11 12
| import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.bar([1,3,5,7,9],[4,6,7,3,8],label="数据1") plt.bar([2,4,6,8,10],[9,3,6,3,9],label="数据2", color='g')
plt.legend() plt.xlabel('学号') plt.ylabel('得分') plt.title("成绩分步条形图") plt.show()
|

直方图
直方图和条形图很像,一般是通过区间显示。举例,年龄分步,我们20-25,25-30,30-35去输出人数。
plt.hist
,你首先需要放入所有的值,然后指定放入哪个桶或容器。
1 2 3 4 5 6 7 8 9 10 11 12
| import matplotlib.pyplot as plt plt.rcParams["font.sans-serif"] = ["SimHei"]
ages = [22,45,56,34,67,23,67,33,44,55,88,38,49,27,34,35,99,91,84,82] bins = [0,10,20,30,40,50,60,70,80,90,100] plt.hist(ages,bins,histtype='bar',rwidth=0.8)
plt.xlabel('年龄') plt.ylabel('人数') plt.title('各年龄段人数分布') plt.legend() plt.show()
|

散点图
基本散点图
1 2 3 4 5 6 7 8 9
| import matplotlib.pyplot as plt import numpy as np
x = np.array([1, 2, 3, 4, 5, 6, 7, 8]) y = np.array([1, 4, 9, 16, 7, 11, 23, 18]) plt.scatter(x, y)
plt.show()
|
实际上,这里不用np也是可以的。
1 2 3 4 5 6 7 8 9
| import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5, 6, 7, 8] y = [1, 4, 9, 16, 7, 11, 23, 18] plt.scatter(x, y)
plt.show()
|

点的大小、颜色和透明度
在plt.scatter(x, y,s=100,c='red')
设置。
s 点的大小 c 点的颜色 alpha 透明度
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei']
x = [1, 2, 3, 4, 5, 6, 7, 8] y = [1, 4, 9, 16, 7, 11, 23, 18] plt.xlabel('横坐标') plt.ylabel('纵坐标')
plt.scatter(x, y,s=200,c='g',alpha=0.1)
plt.show()
|

颜色条
通过plt.colorbar()
#显示颜色条
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei']
x = [1, 2, 3, 4, 5, 6, 7, 8] y = [1, 4, 9, 16, 7, 11, 23, 18] plt.xlabel('横坐标') plt.ylabel('纵坐标')
colors = [0, 10, 20, 30, 40, 45, 50, 55] plt.scatter(x, y,s=200,c=colors,alpha=0.9) plt.colorbar()
plt.show()
|

多组散点图
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei']
x = [1, 2, 3, 4, 5, 6, 7, 8] y = [1, 4, 9, 16, 7, 11, 23, 18]
z = [4, 7, 12, 19, 10, 14, 26, 21] plt.xlabel('横坐标') plt.ylabel('纵坐标')
colors = [0, 10, 20, 30, 40, 45, 50, 55] plt.scatter(x, y,s=200,c=colors,alpha=0.9)
plt.scatter(x, z,s=200,c=colors,alpha=0.9)
plt.colorbar()
plt.show()
|

最后,感谢二十九、3D 绘图 - 《Matplotlib 入门教程》 - 书栈网 · BookStack和(108条消息) Matplotlib 散点图 绘制详解_一条菜鸟鱼的博客-CSDN博客_matplotlib绘制散点图