看了莫烦大佬的视频,做下笔记
目录
1.基本用法
用之前先安装matplot,安装好之后我们导入包。
import matplotlib.pyplot as plt
最后要显示的时候不要忘了plt.show()
1.1 绘制直线
plt.plot()
常用参数:x, y, [fmt]
x,y,对应你画的直线的数据,fmt用于修改直线的format样式,可以修改直线的 color, maker,linestyle。比如 ‘bo--’ ,就会画出一个蓝色的圆形虚线。
plt.plot(x,y1,'bo--',x,y2,'gh:',x,y3) #同时画出了三条线
#也可以单独赋值
plt.plot(x,y1,color = 'red')
1.2 创建一个figure
plt.figure()
功能:创建一个画图
常用参数:num, figsize
num 给figure编号,figsizie调节大小。
可以同时画多个figure,每个figure只对自己下面的操作感应,以下一个figure为边界。
plt.figure(num = 3,figsize= (10,8))
1.3 对坐标轴的操作
plt.xlim() 和 plt.ylim()
功能:控制坐标轴的长度
plt.xlim(left = -10,right = 10) #横坐标从-10 到10
plt.ylim(bottom = -10 , top = 10) #纵坐标从-10 到10
plt.xlabel() 和 plt.ylabel()
功能:更改标签名,可以配置字体样式,
plt.xlabel('x label')
plt.ylabel('y label')
plt.xticks() 和 plt.ytick()
功能:更改坐标轴上的记号点
plt.xticks(x,label,color = 'green',rotation=60)
plt.yticks(y1,label1,color = 'green',rotation=60)
plt.gca()
功能:get current axis ,返回一个ax,可以通过这个改图标的边框属性
ax = plt.gca()
ax.spines['right'].set_color('red')
ax.spines['left'].set_color('blue')
ax.spines['top'].set_color('yellow')
ax.spines['bottom'].set_color('none')
效果:
plt中没有默认的x,y轴,我们可以自己设置,
ax.xaxis.set_ticks_position('bottom') #设置bottom 为x轴
ax.yaxis.set_ticks_position('left') #设置left 为y轴
使用时,要先做好tick,在设置我们的x轴和y轴,才可以更改轴的位置
import matplotlib.pyplot as plt
import numpy as np
label = ['a', 'b','c','d','e']
label1 = ['very good','good','nomal','bad','very bad']
x = np.linspace(1,10,10)
y1 = x*2 + 1
plt.figure()
ax = plt.gca()
plt.xticks(x)
plt.yticks(y1,label1+label,color = 'green',rotation=60)
ax.xaxis.set_ticks_position('bottom') #设置bottom 为x轴
ax.yaxis.set_ticks_position('left') #设置left 为y轴
ax.spines['bottom'].set_position(('data', 3)) #'data' 表示跟着数据来定
ax.spines['left'].set_position(('data', 1)) #也有'axes' ,表示在轴的百分之几
plt.show()
效果:
1.4 在图中添加注释
plt.text()
功能:文本注释
plt.text(x,y,'文字',ha ='center',va ='top')
plt.legend()
功能:画一个小框框来对解释线。
在plt.plot中会有返回值,我们取第一个值为legend需要的handls,代码如下
l1, = plt.plot(x,y1,'g--')
l2, = plt.plot(x,y2,'ro:')
plt.legend(handles = [l1,l2,] , labels = ['a','b'],loc = 'best')
效果:
plt.annotate()
功能:画一个箭头注释
第一个参数是你的文本,xy= ( )点的位置,xycoords配置你的箭头位置模式,
textcoords文本位置模式,fontsize字体大小,arrowprops配置箭头的format
plt.annotate(r'2x+1=%s' % y0, xy=(x0,y0),xycoords = 'data',
textcoords ='offset points',
fontsize = 16,
arrowprops = dict(arrowstyle = '->', connectionstyle = 'arc3,rad = 2'))
效果:
2 各种图的绘制
2.1 散点图
plt.scatter()
功能:画点的,多几个点就是散点图了
n = 512
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n)
T = np.arctan2(Y,X) #只是用来给点配置一些颜色
plt.scatter(X,Y,s=50,c=T,alpha=0.5)
plt.xticks(()) #什么都不显示
plt.yticks(())
plt.show()
效果:
2.2 柱状图
plt.bar()
很简单,看下面例子就差不多了
X = np.arange(10)
Y = X*np.random.uniform(0,1)
plt.bar(X,Y,facecolor = '#9999ff',edgecolor = 'black')
for x,y in zip(X,Y):
plt.text(x,y+0.3,'%.2f'%y,ha = 'center',va = 'top')
plt.show()
效果:
2.3 3D图
3 多图显示
plt.subplot()
plt.subplot(2,2,1)两行两列的第一个位置
plt.figure()
plt.subplot(2,2,1)
plt.plot([0,1],[1,0])
plt.subplot(2,2,2)
plt.subplot(2,2,3)
plt.subplot(2,2,4)
plt.show()
也可以在第一行的两个位置,用来显示一个图
plt.figure()
plt.subplot(2,1,1)
plt.plot([0,1],[1,0])
plt.subplot(2,2,3)
plt.subplot(2,2,4)
plt.show()
效果:
plt.subplot2grid(shape,origin,colspan,rowspan)
功能:据网格来画图
shape大小,origin该图起点,colspan花费多少的列,rowspan多少的行
plt.figure()
ax1 = plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1)
ax2 = plt.subplot2grid((3,3),(1,0),colspan=2)
ax3 = plt.subplot2grid((3,3),(1,2),rowspan=2)
ax4 = plt.subplot2grid((3,3),(2,0))
ax5 = plt.subplot2grid((3,3),(2,1))
plt.show()
效果:
plt.subplots()
感觉用的比较少这个,根据返回的坐标系ax,调用plot就可以画图了,也可以配置坐标系的参数。
ax1.twinx()
功能:在一个图里,画直线,用不同的y轴
x = np.arange(0,10,0.1)
y1 = 0.1*x**2
y2 = -0.1*x**2
fig,ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(x,y1,'g-')
ax2.plot(x,y2,'ro-')
plt.show()
4 img图像显示
plt.imshow()
在里面放入数据就好,可以是narray的数据,格式为[h , w ,C] ,h高,w宽,C颜色通道
要想同时显示几张图,可以和plt.subplot一起用。
plt.figure()
for i in range(1,4)
plt.subplot(2,2,i)
plt.imshow(imgdata[i]) #[h , w, c]
plt.xticks(()) #去除ticks
plt.yticks(())
plt.show()