1 说明:
=====
1.1 matplotlib的强大,一般只是知道它的数据可视化,在显示图片上一般人不知道还有其强大的一面。
1.2 环境:
python3.8+matplotlib3.2.0
1.3 锻炼python思维和熟悉matplotlib作图。
1.4 图片来源:今日头条正版免费图库,向女神刘涛,致敬,仅用于学习。
2 读取一张图片:
============
2.1 方法一:简洁法,代码一。
import matplotlib.pyplot as plt#读取图片img = plt.imread('/home/xgj/Desktop/matplotlib-pic/lt1.jpeg')#将图片挂在plt的imshow上plt.imshow(img)#再展示plt.show()
2.2 方法二:有了方法一,谁还用方法二,作为了解,嘻嘻。代码二。
import matplotlib.image as imgpltimport matplotlib.pyplot as pltimg = imgplt.imread('/home/xgj/Desktop/matplotlib-pic/lt1.jpeg')plt.imshow(img)plt.show()
2.3 图:
3 多子图(2/2=4)显示:
==================
3.1 代码三:
#导入模块import matplotlib.pyplot as plt#读取图片img1 = plt.imread('/home/xgj/Desktop/matplotlib-pic/lt1.jpeg')img2=plt.imread('/home/xgj/Desktop/matplotlib-pic/lt2.jpeg')img3=plt.imread('/home/xgj/Desktop/matplotlib-pic/lt3.jpeg')img4=plt.imread('/home/xgj/Desktop/matplotlib-pic/lt4.jpeg')#定义画布plt.figure()#定义子图、位置和显示图片序号plt.subplot(2,2,1)plt.imshow(img1)plt.subplot(2,2,2)plt.imshow(img2)plt.subplot(223)plt.imshow(img3)plt.subplot(224)plt.imshow(img4)#展示图片plt.show()
3.2 图:
3.3 代码四:是对代码三进行优化。
#导入模块import matplotlib.pyplot as plt#定义画布plt.figure()#读取图片img1 = plt.imread('/home/xgj/Desktop/matplotlib-pic/lt1.jpeg')img2=plt.imread('/home/xgj/Desktop/matplotlib-pic/lt2.jpeg')img3=plt.imread('/home/xgj/Desktop/matplotlib-pic/lt3.jpeg')img4=plt.imread('/home/xgj/Desktop/matplotlib-pic/lt4.jpeg')#定义列表pic_list=[img1,img2,img3,img4] #读取图片列表position_pic=[221,222,223,224] #位置列表#推导式for i in range(4): plt.subplot(position_pic[i]) plt.imshow(pic_list[i])#图片展示plt.show()
4 高级图片动画:
============
4.1 代码五:
#导入模块import matplotlib.pyplot as pltimport randomimport matplotlib.animation as animation#定义画布和背景颜色为黑色=k,注意b=blue,不是blackfig =plt.figure(facecolor='k')ax = plt.gca()#读取图片X=plt.imread('/home/xgj/Desktop/matplotlib-pic/lt1.jpeg')Y=plt.imread('/home/xgj/Desktop/matplotlib-pic/lt2.jpeg')Z=plt.imread('/home/xgj/Desktop/matplotlib-pic/lt3.jpeg')M=plt.imread('/home/xgj/Desktop/matplotlib-pic/lt4.jpeg')#定义列表pic_list=[X,Y,Z,M]#初始化def init(): return X,Y,Z,M#更新def update(i): #随机选取图片列表 p=random.choice(pic_list) #展示 plt.imshow(p) #去除刻度 plt.xticks([]) plt.yticks([]) return X,Y,Z,M #动画ani = animation.FuncAnimation(fig, update, range(10), init_func=init, interval=30)#展示plt.show()
4.2 效果图:
5 再高级一点图片动画:
=================
5.1 代码六:
import matplotlib.pyplot as pltimport randomimport matplotlib.animation as animationfig =plt.figure(facecolor='k')ax = plt.gca()#读取图片X=plt.imread('/home/xgj/Desktop/matplotlib-pic/lt1.jpeg')Y=plt.imread('/home/xgj/Desktop/matplotlib-pic/lt2.jpeg')Z=plt.imread('/home/xgj/Desktop/matplotlib-pic/lt3.jpeg')M=plt.imread('/home/xgj/Desktop/matplotlib-pic/lt4.jpeg')pic_list=[X,Y,Z,M]position_pic=[221,222,223,224]def init(): return X,Y,Z,Mdef update(i): p=random.choice(pic_list) n=random.choice(position_pic) plt.subplot(n) #报错,小bug plt.imshow(p) plt.xticks([]) plt.yticks([]) return X,Y,Z,M ani = animation.FuncAnimation(fig, update, range(10), init_func=init, interval=30)plt.show()
5.2 效果图: