Toolbox ——matplotlib
for noobs to fly
Part 1
库matplotlib即mat plot lib,分别是矩阵、绘图和库的意思,也就是用数组画图的库
基础语句
import matplotlib.pyplot as plt
导入matplotlib这个库中对应的给python画图的部分pyplot
as plt就是约定俗称的一个简称
plot画图
单条曲线
plt.plot(X, Y)
最最最核心的语句!
plot就是画图,X是作为横轴,x轴的数组,Y是作为纵轴,y轴的数组
对于X和Y的要求是数组的大小(里面元素的个数)一致,也就是10个横坐标也要有10个纵坐标
matplotlib会根据你输入的数据自动拟合出一条曲线,不管是直的还是弯的,光滑的就对了
plt.show()
如果只写一个plot,系统会偷偷在后台画图,有了这个就可以把画好的图展示出来, 通常置于一个图一堆代码的最后
例子:
import matplotlib.pyplot as plt
X = [1, 2, 3, 4, 5]
Y = [2, 4, 6, 8, 10]
plt.plot(X, Y)
plt.show()
多条曲线
plt.plot(X1, Y1)
plt.plot(X2, Y2)
plt.plot(X3, Y3)
# 可以一只累积下去
多条曲线在一个图里面,就可以把很多个plot连起来作为多条曲线,多条曲线底下只需要有一个plot.show()就行
例子:
import matplotlib.pyplot as plt
X1 = [1, 2, 3, 4, 5]
Y1 = [2, 4, 6, 8, 10]
X2 = [3, 4, 5, 6, 7]
Y2 = [9, 12, 15, 18, 21]
plt.plot(X1, Y1)
plt.plot(X2, Y2) # 每个曲线和对应的数组一一对应
plt.show() # 这个在末尾有一个就行
图例
当引入多条曲线在一个图的时候,为了明确都是谁,我们得注明他们谁都是谁,于是对于每个曲线需要他们自己的标签——label
plt.plot(X1,Y1, label='line 1')
为了让大伙都能看到这个label,我们需要legen函数来让图例展示出来
(作用类似show(),只是show是让整个图展示,legend是让图例展示,机器比较笨,算好的东西你得告诉他(show&legend)算完了给大伙看,才能给你看)
plt.legend()
横纵轴、整个图例的标题也是同理,需要单独告知程序我有这个东西
# x轴名字
plt.xlabel('X-axis')
# y轴名字
plt.ylabel('Y-axis')
# 这个图的名字
plt.title('plot_title')
例子:
import matplotlib.pyplot as plt
X1 = [1, 2, 3, 4, 5]
Y1 = [2, 4, 6, 8, 10]
X2 = [3, 4, 5, 6, 7]
Y2 = [9, 12, 15, 18, 21]
plt.plot(X1, Y1, label='line1')
plt.plot(X2, Y2, label='line2')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('plot_title')
plt.legend()
plt.show()
多种样式的线条
plt.plot(X, Y, '样式')
'样式’就是想要线条长什么样对应的参数
而样式参数依次是颜色、线形、标记样式
颜色 | 线性 | 标记样式 |
---|---|---|
r | - | . |
g | – | , |
b | : | o |
c | -. | v |
m | ^ | |
y | s | |
k | * | |
w | D | |
d | ||
x | ||
< | ||
> | ||
h | ||
H | ||
1 | ||
2 | ||
3 | ||
4 | ||
_ | ||
| |
这个是对应样式的图片:
只需把对应的颜色、线形、样式连续放入参数当中即可,如‘c–s’便是青色虚线点为方块
例子:
import matplotlib.pyplot as plt
X1 = [1, 2, 3, 4, 5]
Y1 = [2, 4, 6, 8, 10]
X2 = [3, 4, 5, 6, 7]
Y2 = [9, 12, 15, 18, 21]
plt.plot(X1, Y1, 'r-.v', label='line1')
plt.plot(X2, Y2, 'c--s', label='line2')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('plot_title')
plt.show()
散点图
plt.scatter(X, Y)
最最最核心的语句!
和plot一样,X和Y代表横纵坐标,scatter就是把数组对应的散点原原本本的点出来
import matplotlib.pyplot as plt
X1 = [1, 2, 3, 4, 5]
Y1 = [2, 4, 6, 8, 10]
plt.scatter(X1, Y1)
plt.title('scatter_title')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
plt.show()
同样兼容多个对应数组,即多组散点
例子:
import matplotlib.pyplot as plt
X1 = [1, 2, 3, 4, 5]
Y1 = [2, 4, 6, 8, 10]
X2 = [3, 4, 5, 6, 7]
Y2 = [9, 12, 15, 18, 21]
plt.scatter(X1, Y1)
plt.scatter(X2, Y2)
plt.title('scatter_title')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
plt.show()
不同样式
同样不同样式的点也可以进行操作
参数s代表size,大小
参数c代表color,颜色
参数marker代表散点的形状
例子:
import matplotlib.pyplot as plt
X1 = [1, 2, 3, 4, 5]
Y1 = [2, 4, 6, 8, 10]
X2 = [3, 4, 5, 6, 7]
Y2 = [9, 12, 15, 18, 21]
plt.scatter(X1, Y1, s=50, c='r', marker='*')
plt.scatter(X2, Y2, s=50, c='g', marker='o')
plt.title('scatter_title')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
plt.show()
散点图+曲线图综合应用
想让一个折线图里的点和线不同的颜色,只需同一对数组分别用不同的颜色画一个折线图再画一个散点图即可使用不同的颜色区分点和线
例子:
import matplotlib.pyplot as plt
X1 = [1, 2, 3, 4, 5]
Y1 = [2, 4, 6, 8, 10]
X2 = [3, 4, 5, 6, 7]
Y2 = [9, 12, 15, 18, 21]
plt.plot(X1, Y1, 'r-.', label='line1')
plt.plot(X2, Y2, 'r--', label='line2')
plt.scatter(X1, Y1, s=70, c='y', marker='*')
plt.scatter(X2, Y2, s=70, c='g', marker='o')
plt.title('plot+scatter_title')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.legend()
plt.show()