matplotlib 子图 画奇数个

这篇博客介绍如何使用matplotlib在3X3布局中绘制奇数个子图,例如7个,同时删除多余的空白子图。代码示例中展示了如何调整行数,以及如何通过fig.delaxes删除不需要的子图。作者强调了查看官方文档的重要性,避免只使用简单的subplot函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

画子图(奇数个怎么画?)

比如这样,3X3的排列,只画7个,剩下两个不要:

在这里插入图片描述

上面代码如下:

import matplotlib.pyplot as plt
import numpy as np


# N 行 3 列的布局,
total=7 # 假设画7个子图,这里可以随便改
N = int(total / 3) + (0 if total%3 == 0 else 1)  # 计算行数
fig, axes = plt.subplots(N, 3, figsize=(6, 4), dpi=150)

# 总共 画7个子图
for idx in range(7):
    ax = axes[int(idx/3)][idx%3]
    ax.plot(np.arange(10), label='range(10)')
    ax.set_title(f'the {idx}-th sugfig')

# 删除最后两个空的子图
fig.delaxes(axes[-1][-1])
fig.delaxes(axes[-1][-2])

handlers, labels = axes[0][0].get_legend_handles_labels()
fig.legend(handlers, labels, loc='lower right')
plt.tight_layout()
plt.show()

subplot 非subplots可以直接参考官网:

(只会用subplot(221)等等之类的都不是真懂)

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.subplot.html

在这里插入图片描述
我也搞不懂为什么搜到的博客都是只会:plt.subplot(221)这种用法。。。
建议大家多多看官方文档,免得被误导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值