基本使用
基本格式
1 | import matplotlib.pyplot as plt |
- np.linspace:定义x:范围是(-1,1);个数是50. 仿真一维数据组(x ,y)表示曲线1.
- plt.figure:定义一个图像窗口,小窗口里面还可以有更多的小图片。这里定义一个图像窗口:编号为3;大小为(8, 5)
- plt.plot:画(x ,y)曲线.
plt.show:显示图像. ### 基础设置 #### 图像坐标轴设置
1
2
3
4
5plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--')
plt.xlim((-1, 2))
plt.ylim((-2, 3))
plt.xlabel('I am x')
plt.ylabel('I am y')- plot中对图像进行设置,如color(颜色),linewidth(行宽),linestyle(曲线的类型)
- xlim:x坐标轴范围
- ylim:y坐标轴范围
- xlabel:x坐标轴名称
ylabel:y坐标轴名称
1
2
3new_ticks = np.linspace(-1, 2, 5)
plt.xticks(new_ticks)
plt.yticks([-2, -1.8, -1, 1.22, 3],[r'$really\ bad$', r'$bad$', r'$normal$', r'$good$', r'$really\ good$'])- xticks:设置x轴刻度
yticks:设置y轴刻度以及名称:刻度为[-2, -1.8, -1, 1.22, 3];对应刻度的名称为[‘really bad’,’bad’,’normal’,’good’, ‘really good’].
图像边框
1 | ax = plt.gca() |
- gca:获取当前坐标轴信息.
- spines:设置边框
- set_color:设置边框颜色:默认白色;
改变坐标轴的位置
1 | ax.xaxis.set_ticks_position('bottom') |
- xaxis.set_ticks_position:设置x坐标刻度数字或名称的位置
- bottom.(所有位置:top,bottom,both,default,none),默认是bottom
- spines:设置边框:x轴;
- set_position:设置边框位置:x=0/y=0的位置;(位置所有属性:outward,axes,data)
- ('data', 0):标识0的位置,让x和y轴的位置移动到此
1
2ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
Legend 图例
基本配置 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y1 = 2*x + 1
y2 = x**2
plt.figure()
plt.xlim((-1, 2))
plt.ylim((-2, 3))
new_ticks = np.linspace(-1, 2, 5)
plt.xticks(new_ticks)
plt.yticks([-2, -1.8, -1, 1.22, 3],[r'$really\ bad$', r'$bad$', r'$normal$', r'$good$', r'$really\ good$'])
绘制图例
1 | l1, = plt.plot(x, y1, label='linear line') |
- label:图例名称
- loc='upper right':表示图例将添加在图中的右上角.
调整label
重新设置了线条对应的 label 1
plt.legend(handles=[l1, l2], labels=['up', 'down'], loc='best')
handles=[l1, l2]
:指上面代码中的l1, l2,
(要以逗号结尾,因为plt.plot()
返回的是一个列表.)best
:表示自动分配最佳位置
ioc
参数
1 | 'best' : 0, |
Annotation 标注
绘制图像基本信息 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y = 2*x + 1
plt.figure(num=1, figsize=(8, 5),)
plt.plot(x, y,)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom') # 设置x坐标刻度数字或名称的位置
ax.spines['bottom'].set_position(('data', 0)) # 设置边框位置:x=0/y=0的位置
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))
# 画一条垂直于x轴的虚线.
x0 = 1
y0 = 2*x0 + 1
plt.plot([x0, x0,], [0, y0,], 'k--', linewidth=2.5)
# 设置点的类型
plt.scatter([x0, ], [y0, ], s=50, color='b')
添加注释 annotate
1 | plt.annotate(r'$2x+1=%s$' % y0, xy=(x0, y0), xycoords='data', xytext=(+30, -30), |
- xycoords='data':基于数据的值来选位置
- xytext=(+30, -30): xy 的偏差值
- textcoords='offset points:对于标注位置的描述
- arrowprops:对图中箭头类型的一些设置
添加注释 text
1 | plt.text(-3.7, 3, r'$This\ is\ the\ some\ text. \mu\ \sigma_i\ \alpha_t$', |
- -3.7, 3,是选取text的位置
- 空格需要用到转字符
\
- fontdict设置文本字体
tick 能见度(透明度)
绘制图像基本信息 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y = 0.1*x
plt.figure()
# 在 plt 2.0.2 或更高的版本中, 设置 zorder 给 plot 在 z 轴方向排序
plt.plot(x, y, linewidth=10, zorder=1)
plt.ylim(-2, 2)
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data', 0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data', 0))
调整坐标
对被遮挡的图像调节相关透明度,本例中设置 x轴 和 y轴 的刻度数字进行透明度设置 1
2
3
4for label in ax.get_xticklabels() + ax.get_yticklabels():
label.set_fontsize(12)
# 在 plt 2.0.2 或更高的版本中, 设置 zorder 给 plot 在 z 轴方向排序
label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.7, zorder=2))
- zorder:图层的显示顺序
- set_fontsize(12):重新调节字体大小
- set_bbox:设置目的内容的透明度相关参
facecolor
调节 box 前景色,edgecolor
设置边框, 本处设置边框为无,alpha设置透明度