利用GridSpec列对象来自定义画布中子图的布局结构

matplotlib中有一个gridspec模块是专门指定画布中子图位置的模块,用于创建一个网格布局,它可以将一个图形分成多个子图并能够创建跨越性和列的的子图

具体参数如下:

nrows:行数

ncols:列数

figure:表示布局的画布

hspace:坐标系实例之间的纵向距离

wspace:坐标系实例之间的横向距离

width_rations:表示直接设置坐标系相对宽度,相对宽度=设定值/sum

height_rations:表示直接设置坐标系相对高度,相对高度=设定值/sum

eft,bottom,right,top:表示子图范围,把所有坐标实列打包在一起,整体伸缩或平移

其基本格式如下:

GridSpec(nrows,ncols,figure=None,left=None,bottom=None,right=None,top=None,wspace=None,
hspace=None,width_rations=None,height_rations=None)

 在了解以上内容后接下来做一个实例:

需求:

利用自定义布局的GridSpec实例,在画布上创建如图所示的坐标系实例(见运行结果展示图)
%matplotlib notebook
import matplotlib.pyplot as plt

#1.创建画布实例


#2.创建“区域规划图”实例


#3.根据给定的“区域规划图”,创建对应的坐标系实例


plt.show()

 展示图如下:

 

 第一步:创建画布实例

fig = plt.figure()

 第二步:创建“区域规划图”实例(gridspec运用

spec = gridspec.GridSpec(3,4,  figure=fig)

第三步: 根据给定的“区域规划图”,创建对应的坐标系实例

ax1 = plt.subplot(spec[0,0:4])      #切片操作,实现跨列或跨行
ax2 = plt.subplot(spec[1,0:2])
ax3 = plt.subplot(spec[1,2:4])
ax4 = plt.subplot(spec[2,0:1], projection='polar')
ax5 = plt.subplot(spec[2,1:4])

做到这步基本完成 ,需要调成子图位置,使其位置美观

plt.tight_layout()

最后完整代码如下: 

%matplotlib notebook
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
fig = plt.figure()
spec = gridspec.GridSpec(3,4,  figure=fig)#gridspec模块运用

ax1 = plt.subplot(spec[0,0:4])      
ax2 = plt.subplot(spec[1,0:2])
ax3 = plt.subplot(spec[1,2:4])
ax4 = plt.subplot(spec[2,0:1], projection='polar')
ax5 = plt.subplot(spec[2,1:4])

plt.tight_layout() #调整子图之间的距离
plt.show()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值