知其然,亦知其所以然
学习要变成自己的东西才能做到得心应手,游刃有余,我们要不断的思考为什么是这样,原因是什么,而不仅仅是照搬照抄,吸引眼球,也许你浏览网上的文章看同类文章会晕头转向,但我相信,看了我写的内容,一定会让你思维焕然一新!
上节课学习的是神秘九宫格,不知你看了没有?
九宫格中的神秘深入解析
这一篇让我们了解一下添加子图的神秘功能吧!
add_subplot(),三位参数,111~999
走进111子图让我们看代码
import matplotlib.pyplot as plt
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
ax1.plot((0,1),(10,20))
plt.show()
知识解析:
1、要导入可视化视图模块matplotlib.pyplot库,命名为plt
2、创建可视化画布plt.figure()
3、为画布fig1添加子图add_subplot(111),注三位数含义,1行,1列,使用1/1。
上图:
重点解析:
ax1.plot((0,1),(10,20)) 括号内的2个元组对,表示图中的点坐标。为了更清楚,我们加上上节课神秘九宫格中的散点命令scatter
import matplotlib.pyplot as plt
fig1 = plt.figure()
ax1=fig1.add_subplot(111)
ax1.plot((0,1),(10,20))
plt.scatter((0,1),(10,20))
plt.show()
得到的是这样的效果:
解析:
plt.scatter((0,1),(10,20)) 这里的scatter()命令,可以利用括号内的坐标点,进行描点
动脑思考:
如果想要得到虚线绘制的图,应该添加什么样的参数呢?效果如图
重点沿伸
因为我们今天重点学习的是add_subplot命令,我们刚刚使用了他的第一个参数111,接下来我们用一下他的第二个参数221,222,223,224,感觉到很奇怪吧,为什么我会写出四组数字呢?
看一下这张图,或者你能悟出原因来!
这四张图,很好的利用了add_subplot添加子图功能,以下是原代码
import matplotlib.pyplot as plt
fig1 = plt.figure()
ax1=fig1.add_subplot(221)
ax2=fig1.add_subplot(222)
ax3=fig1.add_subplot(223)
ax4=fig1.add_subplot(224)
ax1.plot((0,1),(10,20),color="red")
ax2.plot((0,1),(10,20),color="blue")
ax3.plot((0,1),(10,20),color="brown")
ax4.plot((0,1),(10,20),color="black")
代码解析:
- 我们用了一个画布,fig1
- 我们为这个画布添加了四个子图,2行2列,被切分成四个格子,按照顺序排列为1,2,3,4
- 四个子图分布命名为ax1,ax2,ax3,ax4
- 利用plot把四个子图上的坐标连接到一起,然后用不同的颜色标识一下,就得到了我们上面看到的最终效果啦!
好学的你,看懂了吗?
反思延伸:
学习就是这样一个不断思考,不断提升,不断练习,不断成长的过程,编程是一个神奇的分析和思考过程,众多参数可以帮助我们灵活运用程序,达到自己想要的设计效果,相信前进的路上,我们一起成长!
为了大家更好的学习和理解,特别送出一个增加难度的代码分析,大家看一下这段代码,你能理解多少?
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import gridspec
#random_nums取1~50之间随机2个整数
random_nums = np.random.randint(1, 50 ,2)
random_nums2 = np.random.randint(1, 50 ,3)
random_nums3 = np.random.randint(1, 50 ,4)
random_nums4 = np.random.randint(1, 50 ,5)
print(random_nums)
fig1 = plt.figure()
ax1 = fig1.add_subplot(221)
ax2 = fig1.add_subplot(222)
ax3 = fig1.add_subplot(223)
ax4 = fig1.add_subplot(224)
#思考一下,这里的四段代码含义吧!!!
ax1.plot(range(len(random_nums)), random_nums)
ax2.plot(range(len(random_nums2)), random_nums2)
ax3.plot(range(len(random_nums3)), random_nums3)
ax4.plot(range(len(random_nums4)), random_nums4)
plt.show()
最终得到的效果图形,上来了!
能用你自己的理解,说说这段代码的含义吗?
书友汇-德天老师,期待你的精彩分析哦!