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

如何控制Matplotlib中inset axes与外部边框间区域的颜色

解决Matplotlib嵌入轴与外围边框间区域的颜色设置问题

要设置嵌入轴(inset axes)与外围特定边框之间区域的颜色,核心思路是在父轴上绘制一个与外围边框匹配的填充矩形,再将嵌入轴置于该矩形上方,具体实现如下:

步骤1:创建基础轴与嵌入轴

先创建父轴和嵌入轴,这里以常见的右上角嵌入为例:

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import inset_axes

fig, ax = plt.subplots()
ax.plot([1,2,3], [4,5,6])

# 创建嵌入轴,位置在父轴右上角,占父轴20%宽高
inset_ax = inset_axes(ax, width="20%", height="20%", loc='upper right')
inset_ax.plot([0,1], [0,1])

步骤2:绘制外围边框与中间填充区域

通过父轴的add_patch方法绘制一个比嵌入轴稍大的矩形(作为外围边框的底层填充),再设置矩形的边框颜色和填充颜色:

import matplotlib.patches as patches

# 获取嵌入轴在父轴中的归一化位置坐标
bbox = inset_ax.get_position()
# 扩展矩形范围,留出嵌入轴与外围边框的间隙
expanded_bbox = [bbox.x0 - 0.02, bbox.y0 - 0.02, bbox.width + 0.04, bbox.height + 0.04]

# 创建填充矩形:设置中间区域颜色和外围蓝色边框
patch = patches.Rectangle(
    (expanded_bbox[0], expanded_bbox[1]),
    expanded_bbox[2], expanded_bbox[3],
    facecolor='lightgreen',  # 替换为你需要的中间区域颜色
    edgecolor='blue',        # 外围蓝色边框
    linewidth=2,
    zorder=inset_ax.get_zorder() - 1  # 让矩形在嵌入轴下方显示
)
ax.add_patch(patch)

# 可选:将嵌入轴背景设为透明,避免遮挡底层填充色
inset_ax.set_facecolor('none')

关键说明

  • get_position()获取嵌入轴在父轴中的归一化坐标,调整扩展数值可控制间隙大小
  • zorder参数确保填充矩形处于嵌入轴下方,保证中间区域颜色能正常显示在嵌入轴与蓝色边框之间
  • 如果外围边框是通过其他方式创建的,只需将矩形尺寸与边框对齐即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:06:29