You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为多极坐标contourf子图添加独立色条并统一尺寸

给每个极坐标Contourf子图添加独立规整色条的解决方案

我来帮你搞定这个问题!要给每幅极坐标contourf子图配上独立且尺寸统一的色条,最稳妥的方法是用mpl_toolkits.axes_grid1里的make_axes_locatable工具,它能自动为每个子图生成高度完全匹配的色条轴,避免手动调整的麻烦。

完整示例代码

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np

# 生成示例极坐标数据
theta = np.linspace(0, 2 * np.pi, 100)
r = np.linspace(0, 1, 50)
R, Theta = np.meshgrid(r, theta)

# 准备4组不同的数据(替换成你的实际数据即可)
data_list = [
    np.sin(Theta) * R,
    np.cos(Theta) * R,
    np.sin(2 * Theta) * R,
    np.cos(2 * Theta) * R
]

# 创建2x2的极坐标子图
fig, axes = plt.subplots(2, 2, subplot_kw={'projection': 'polar'}, figsize=(10, 10))
axes = axes.flatten()  # 把二维数组转成一维,方便遍历

for ax, data in zip(axes, data_list):
    # 绘制contourf热力图
    cs = ax.contourf(Theta, R, data, cmap='viridis', levels=15)
    
    # 为当前子图创建可分割的轴对象,用于精准放置色条
    divider = make_axes_locatable(ax)
    # 在子图右侧添加色条轴:宽度占子图的5%,与子图间距0.1
    cax = divider.append_axes("right", size="5%", pad=0.1)
    
    # 把色条绑定到对应的色条轴上
    plt.colorbar(cs, cax=cax)
    
    # 给子图添加标题(可选)
    ax.set_title(f"Subplot {axes.tolist().index(ax)+1}")

# 自动调整布局,避免元素重叠
plt.tight_layout()
plt.show()

关键步骤解释

  • make_axes_locatable:这个工具会把当前子图的轴对象分割成可自定义的区域,让我们能精准地在子图旁添加色条轴,保证色条高度和子图完全匹配。
  • append_axes:指定色条的位置(这里选right右侧),通过size统一控制所有色条的宽度,pad统一控制色条与子图的间距,这样所有色条的尺寸和位置会完全规整。
  • 子图与数据绑定:遍历过程中把每个子图对应的数据和色条一一绑定,确保每个色条只反映当前子图的数值范围。

用这个方法生成的图,每个极坐标子图旁边都会有独立的色条,而且所有色条的高度、宽度、间距完全统一,布局看起来非常整齐。

内容的提问来源于stack exchange,提问作者Jakes Sevirb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:20:10