python画图指定起点_Python的⼦绘图区域
在Python的Spyder环境下⾯有两种⽅法绘制⼦绘图区域:⼀种是使⽤subplot函数,另⼀种是使⽤gridspec函数。
Subplot
启动spyder环境后,⾸先要启⽤两个package:
import numpy as np
import matplotlib.pyplot as plt
接着,可以输⼊以下指令:
plt.subplot2grid((3,3), (0,0), colspan=3)
...
plt.subplot2grid((3,3), (1,0), colspan=2)
...
plt.subplot2grid((3,3), (1,2), rowspan=2)
...
plt.subplot2grid((3,3), (2,0))
...
plt.subplot2grid((3,3), (2,1))
...
我们就可以得出以下⼦绘图区域:
以第⼀⾏代码为例:plt.subplot2grid((3,3), (0,0), colspan=3)
意思是将这⼀幅图氛围3*3的区域,左起横列为0,1,2;左起竖列为0,1,2。
第⼀个(3,3)所代表的是整个⾯板:我要绘制⼀个3*3的格⼦
第⼆个(0,0)所代表的是起点:从(0,0)开始为我的出发点
colspan=3所代表的是长度:我需要⼀个长度为3的⼦绘图区域
那么连起来就是我要在⼀个⾯积为3*3的画布中,左上⾓(0,0)开始绘制⼀个横长度(col)为3的区域。那么这个区域绘制出来就是下图的A区
同理,这⾏代码:plt.subplot2grid((3,3), (2,1))所表达的意思就是我要在⼀个3*3的画布上,以(2,1)开始绘制⼀个占1格的⼦绘图区域(D)。由于只占1格,所以后⾯⽆需再加colspan/rowspan。
Gridspec
依旧是先导⼊两个package:
import numpy as np
import matplotlib.pyplot as plt
接下来输⼊以下代码:matplotlib中subplot
gs = gridspec.GridSpec(3,3)
ax1 = plt.subplot(gs[0,:])
ax2 = plt.subplot(gs[1, :-1])
ax3 = plt.subplot(gs[1:,-1])
ax4 = plt.subplot(gs[2,0])
ax5 = plt.subplot(gs[2,1])
与subplot不同的是,我们先⾏设置出所要使⽤的画布⼤⼩:gs = gridspec.GridSpec(3,3),之后再分割画布:
⾸先需要明确的是:gs后⾯中括号中的逗号是分割⾏与列的;也就是说: gs[⾏,列]
其次需要说明':'的意思:我们都知道word这个单词w在位置0,o在位置1,r在位置2,d在位置3。在word⾥⾯取1:3意味着从位置1到位置3,但是不包含位置3;也就是说取'or'这两个字母。
那么ax1区域的代码可以解释为:⾏的位置为第0⾏;列的位置:单独出现':'则表⽰为取所有列。也就是整个第0⾏,即ax1的区域。
ax3区域的代码⾏的位置为1:,也就是第1⾏及以后的(在这⾥就是第⼀⾏和第⼆⾏),列的位置为-1,也就是最后⼀列。那么覆盖的区域就是⾏数为1和2的最后⼀列,也就是图中所标ax3的位置。
总结
subplot代码需要每次在选定⼦绘图区域的时候都要绘制⼤画布;⽽gridspec代码只需要在⼀开始的时候绘制好⼤画布便可以进⾏分割。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。