前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Matplotlib子图划分——非均匀绘图

Matplotlib子图划分——非均匀绘图

作者头像
python数据可视化之路
发布2023-02-23 21:04:50
1.2K0
发布2023-02-23 21:04:50
举报

本节主要探讨matplotlib子图的非均匀划分,并在文末补充了axes对象的常用属性。

一、均匀子图的划分(参考上一节)

二、非均匀子图划分

分均匀子图的语法均可用于均匀绘图

1)subplot()函数

语法:plt.subplot(nrows, ncols, index, **kwargs),参数解释参考上一节。

现在创建一个画布,有三个子区,子区1,2在第一行,子区3单独在第二行。

代码语言:javascript
复制
# 非均匀绘图
import matplotlib.pyplot as plt

fig = plt.figure(figsize = (6, 6)) #设置画布大小为6英寸*6英寸
ax1 = plt.subplot(221) #表示将画布分为2行2列,索引为1的子区
ax2 = plt.subplot(222) #表示将画布分为2行2列,索引为2的子区
ax3 = plt.subplot(212) #表示将画布分为2行1列,索引为2的子区

plt.show()

图1 subplot子图划分

关于ax3 = plt.subplot(212)的理解:因为子区都是在同一个画布上绘制的,每一个plt.subplot()都是指定一个划分规则并选中子区。ax1,ax2表示对画布分为4个均等子区,并且选中了第一个和第二个,剩下的第二行没有被选中。ax3语法则按照新的划分规则(分为2行1列)将画布重新划分,并占用第2行的部分,这一部分恰好是ax1和ax2所空出来的,完成了画布的不均等划分。

2)add_subplot()函数

语法:fig.add_subplot(nrows, ncols, index, **kwargs)

参数解释和subplot()类似。

现在创建一个画布,有三个子区,子区1,2在第一行,子区3单独在第二行。

代码语言:javascript
复制
fig = plt.figure(figsize = (5, 5))

ax1 = fig.add_subplot(221) #表示将画布分为2行2列,索引为1的子区
ax2 = fig.add_subplot(222) #表示将画布分为2行2列,索引为2的子区
ax3 = fig.add_subplot(212) #表示将画布分为2行1列,索引为2的子区

plt.show()

图2 add_subplot子图划分

3)subplot_mosaic()函数

语法:fig, axs = plt.subplot_mosaic(子图别称,layout, figsize) #笔者常用这两个参数。

参数解释参见上一节内容。

现在创建一个画布,有三个子区,子区1,2在第一行,子区3单独在第二行。

代码语言:javascript
复制
fig, ax = plt.subplot_mosaic('''
                                AB
                                CC''', layout = 'constrained', figsize = (6, 6))
ax['A'].set_title('Part A') #设置A子区标题
ax['B'].set_title('Part B')
ax['C'].set_title('Part C')

plt.show()

图3 subplot_mosaic子区划分

以上就是笔者用于不均匀子图划分的常用函数,上述子区都是axes对象,因此可以使用axes的方法属性对绘图区进行调整。

三、axes对象常用的属性

axes.set_xlim():设置x轴范围,axes.set_xlim(-5, 5)

axes.set_xlabel():设置x轴标签,axes.set_xlabel('x轴', font1),使用font1号新建字体样式,具体参考上一节第一个例子。

axes.set_xticks():设置x轴刻度,axes.set_xticks(range(-5, 6, 1),设置x轴刻度为[-5, -4, ..., 4, 5]

axes.get_xticklabels():获取x轴刻度列表。

[label.set_fontsize(size) for label in axes.get_xticklabels] 改变x轴刻度字体大小(配合获取刻度列表使用),同样,坐标轴刻度字体也要配合刻度列表使用。

代码语言:javascript
复制
x1_label = ax1.get_xticklabels() #获取x轴刻度列表
[label.set_fontsize(15) for label in x1_label] #改变x轴刻度字体大小
[label.set_fontname('Times New Roman') for label in x1_label] #设置坐标轴刻度字体

axes.legend(fontsize = 15):显示图例,并设置字体大小为15。

axes.set_title():设置标题。

更多的设置参考博客:

https://blog.csdn.net/weixin_44237337/article/details/116149154

本节的非均匀绘图到此结束,感谢阅读,下一节将进行统计图形绘制。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python数据可视化之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档