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

如何给含多Axes对象的Matplotlib图形添加Colorbar?

多Axes Matplotlib图形添加Colorbar的实现方法

一、优先方案:右侧对齐布局(与主Axes绑定)

如果已经用make_axes_locatable创建了多子轴,直接基于主散点图的Axes生成对齐的色条轴即可,核心是利用同一个divider对象扩展新轴:

代码示例

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

# 生成测试数据
x = np.random.rand(100)
y = np.random.rand(100)
color_vals = np.random.rand(100)

# 初始化画布与主散点图轴
fig, ax_main = plt.subplots(figsize=(8, 6))
divider = make_axes_locatable(ax_main)

# 模拟你已创建的其他子轴(比如上下左右的直方图)
ax_bottom = divider.append_axes("bottom", size="20%", pad=0.1)
ax_left = divider.append_axes("left", size="20%", pad=0.1)

# 绘制主散点图,必须保留返回的mappable对象(sc)
sc = ax_main.scatter(x, y, c=color_vals, cmap="viridis")

# 在主轴右侧生成色条专用轴
cax_right = divider.append_axes("right", size="5%", pad=0.15)
# 将色条绑定到该轴
plt.colorbar(sc, cax=cax_right)

# 调整其他子轴的显示(可选)
ax_bottom.hist(x, bins=20)
ax_left.hist(y, bins=20, orientation="horizontal")
ax_bottom.set_xticks([])
ax_left.set_yticks([])

plt.tight_layout()
plt.show()

关键说明

  • 必须保留散点图的返回对象(sc),这是色条能关联数据的核心
  • 利用已有的divider直接调用append_axes,生成的色条轴会和主轴自动对齐,避免多轴布局下的错位问题
  • 通过size参数控制色条宽度,pad参数调整与主轴的间距

二、备选方案:主图内部左上角布局

如果需要将色条放在主散点图内部,使用inset_axes创建内嵌轴即可:

代码示例

# 承接上面的代码,替换右侧色条部分
from mpl_toolkits.axes_grid1.inset_locator import inset_axes

# 在主图左上角创建内嵌色条轴,设置尺寸与位置
cax_inset = inset_axes(ax_main, width="30%", height="5%", loc="upper left", borderpad=1)
# 生成水平方向的色条
plt.colorbar(sc, cax=cax_inset, orientation="horizontal")

关键说明

  • loc参数可指定内部位置(如upper left/lower right等)
  • borderpad控制内嵌轴与主图边界的距离,避免遮挡数据

内容的提问来源于stack exchange,提问作者O.rka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:47:31