一、Matplotlib基础
下面的测试数据下载
Matplotlib中的基本图表包括的元素
1) x轴和y轴 axis
水平和垂直的轴线
2)轴标签 axisLabel
水平和垂直的轴标签
3)x轴和y轴刻度 tick
刻度标示坐标轴的分隔,包括最小刻度和最大刻度
4)x轴和y轴刻度标签 tick label
表示特定坐标轴的值
5)绘图区域(坐标系) axes
实际绘图的区域
6)画布 figure
呈现所有的坐标系
1)只含单一曲线的图
画一条正弦曲线
x = np.arange(-np.pi,np.pi,0.1) # [start,] stop[, step,] 开始值 结束值 步长值
x
y = np.sin(x)
y
plt.plot(x,y) # plot(x, y) 最简单的参数形式 传入x和y的值
2)只含多个曲线的图
方法一:使用多个plot函数(推荐)
x1 = np.arange(-np.pi,0,0.1)
x2 = np.arange(0,np.pi,0.1)
# 方式一:多次使用 plt.plot绘制多个函数
plt.plot(x1,np.sin(x1))
plt.plot(x2,np.sin(x2))
方法二:在一个plot函数中传入多对X,Y值
x1 = np.arange(-np.pi,0,0.1)
x2 = np.arange(0,np.pi,0.1)
#调用一次plt.plot里面传入多个x和y的值 plt.plot(x1,y1,x2,y2,...xn,yn)
plt.plot(x1,np.sin(x1),x2,np.sin(x2))
3)子画布
matplotlib中画布分为主画布与子画布,主画布包含子画布
1、设置主画布的大小
plt.figure(figsize=None)
x = np.arange(-np.pi,np.pi,0.1)
plt.figure(figsize=(5,5)) #设置主画布大小 注意设置画布大小必须在图形之前才有效
plt.plot(x,np.tan(x))
2、设置子画布的大小
plt.subplot(*args, **kwargs)
'''
# subplot(2, 3, 3)
创建一个子画布 把原来的大的画布
上下分成2部分 左右分成3部分 占用哪个部分
'''
(1) : 创建子画布
plt.figure(figsize=(8,8))
axes1 = plt.subplot(4,2,1) # 根据传入的参数创建子画布 返回坐标系对象这里占纵向的1/4
axes2 = plt.subplot(4,2,4)
axes3 = plt.subplot(2,2,3) #注意,这里的纵向画布是占总画布的一半
axes4 = plt.subplot(2,2,4)
(2) : 在子画布中绘图
在每一个小的坐标系上绘图 而不是在大的画布上绘图
axes1.plot(x,np.sin(x))
axes2.plot(x,np.cos(x))
axes3.plot(x,np.tan(x))
axes4.plot(x,np.tanh(x))
4)网格线
plt.grid(b=None,which=’major’,axis=’both’,**kwargs)
注意:如果画布有子画布的话,plt.grid只会给离他最近的那个子画布绘制网格线
一般给子画布单独绘制网格线
创建一个空的画布
plt.figure(figsize=(8,8))
axes1 = plt.subplot(221)
axes2 = plt.subplot(222)
axes3 = plt.subplot(223)
axes4 = plt.subplot(224)
axis显示轴向
'''
axis: 默认为横纵都有
axis="x" 在 X 轴上方绘制网格线
axis="y" 在 Y 轴上方绘制网格线
'''
axes2.grid(axis='x') # 在轴上方绘制网格线
color(c)代表颜色
alpha表示线的明暗程度
linewidth(lw)代表线的粗细
axes4.grid(color='red',linewidth=2,alpha=0.2)
axes1.grid() # axis='both' 默认水平竖直方向都有网格线
axes2.grid(axis='x') # 在轴上方绘制网格线
axes3.grid(axis='y')
axes4.grid(color='red',linewidth=2,alpha=0.2)
5)坐标轴的轴线
plt.axis([xmin,xmax,ymin,ymax])
1)设置坐标轴的刻度起止值
(1) plt.axis()设置坐标轴起始值
plt.axis([xmin,xmax,ymin,ymax])
x = np.linspace(-1,1,100)
# x**2+y**2=1
# y**2=1-x**2
# y=(1-x**2)**0.5
y=(1-x**2)**0.5
plt.plot(x,y)
plt.plot(x,-y)
plt.axis([-2,2,-2,2]) # [x轴的起始值,x轴的结束值,y轴的起始值,y轴的结束值]
(2) xlim方法和ylim方法设置坐标轴起始值
2)设置坐标轴类型
plt.axis(‘xxx’) ‘off’、’equal’……
'''
equal:改变*x*或*y*轴的极限,使其等于*x*的增量
和*y*长度相同;一般用来绘制圆形
off:隐藏坐标轴
'''
(2) 绘制圆形
x = np.linspace(-1,1,100)
6)坐标轴的标签
设置坐标轴标签的方向,颜色,旋转角度
plt.xlabel( )方法 和 plt.ylabel( )方法
plt.xlabel(s,color=’orange’,fontsize=20,rotation=20)
'''
s: 标签名称
color:标签颜色
fontsize:标签字体大小
rotation: 标签旋转角度
'''
# 正弦曲线
x = np.arange(-np.pi,np.pi,0.1)
y = np.sin(x)
plt.plot(x,y)
# X Y 标签的内容
plt.xlabel('x')
plt.ylabel('f(x)=sin(x)')
plt.xlabel('x',color='orange',fontsize=20,rotation=20) #设置X轴标签的内容及样式
plt.ylabel('f(x)=sin(x)',rotation=60 ,fontsize=20) #设置Y轴标签的内容及样式
7)画布的标题
plt.title(s, *args, **kwargs)
'''
color:颜色
fontsize:字体大小
rotation:旋转角度
loc:位置{'center', 'left', 'right'}
默认在中间
'''
# 正弦曲线
x = np.arange(-np.pi,np.pi,0.1)
x
y = np.sin(x)
plt.plot(x,y)
plt.title('Sin(x)',color='red',fontsize=25,rotation=45,loc='right') # 默认在中间
8)图例
(1)方式一 plt.plot()中传入名字
# 方式一 plt.plot()中传入名字
x = np.linspace(0,10,101)
x
plt.plot(x,x,label='normal')
plt.plot(x,2*x,label='fast')
plt.plot(x,x/2,label='slow')
plt.legend() #注意,使用label之后需要调用legend()
(2)方式二 plt.plot()中传入名字
x = np.linspace(0,10,101)
x
plt.plot(x,x)
plt.plot(x,2*x)
plt.plot(x,x/2)
plt.legend(['normal','fast','slow'])
(3) loc参数
功能:设置图例的位置
默认在最优位置
字符串 | 数值 | 字符串 | 数值 |
---|---|---|---|
best 最优的位置 | 0 | center left 中间靠左 | 6 |
upper right 右上角 | 1 | center right 中间靠右 | 7 |
upper left 坐上角 | 2 | lower center 中间靠下 | 8 |
lower left 左下角 | 3 | upper center 中间靠上 | 9 |
lower right | 右下角 | center 正中间 | 10 |
right 中间靠右 | 5 |
data = np.random.randint(0,100,size=(10,3))
df = DataFrame(data,columns=list('ABC'))
df
plt.plot(df['A'])
plt.plot(df['B'])
plt.plot(df['C'])
plt.legend(['1','2','3'],loc=9)
loc参数还可以是2个元素的列表,表示图例左下角的坐标
- [0,0] 左下
- [0,1] 左上
- [1,0] 右下
- [1,1] 右上
data = np.random.randint(0,100,size=(10,3))
df = DataFrame(data,columns=list('ABC'))
df
plt.plot(df['A'])
plt.plot(df['B'])
plt.plot(df['C'])
plt.legend(['1','2','3'],loc=[1,0.5])
(4) ncol参数
功能:设置图例有几列
data = np.random.randint(0,100,size=(10,3))
df = DataFrame(data,columns=list('ABC'))
df
plt.plot(df['A'])
plt.plot(df['B'])
plt.plot(df['C'])
plt.legend(ncol=3)
二、设置plot的风格和样式
1、点和线的样式
(1)颜色
参数colo=”red”或c=”red”
颜色值的方式
1.合法的HTML颜色名
2.别名
3.HTML十六进制字符串
4.归一化到[0, 1]的RGB元组
x = np.linspace(-np.pi,np.pi,100)
x
plt.plot(x,np.sin(x),color='red') #常规设置颜色
plt.plot(x,np.sin(x),c='red') #简写设置颜色
plt.plot(x,np.sin(x),c='#aabbcc')