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

如何在Matplotlib中按Y轴特定区间设置透明度而非关联颜色

按Y轴区间独立设置Matplotlib图像透明度的实现方法

要实现按Y轴区间单独调整透明度(与颜色分离),你需要先生成一个和图像数据维度完全匹配的alpha数组——imshow的alpha参数要求输入与像素网格一一对应的数值数组,而非直接传入区间定义。以下是具体实现步骤和完整代码:

核心思路

  1. 移除颜色定义中的alpha通道,让颜色仅由RGB值控制
  2. 生成与图像每行对应的Y轴像素值数组
  3. 根据目标Y区间,为对应行分配指定的透明度值,生成alpha数组
  4. 将alpha数组传入imshow的alpha参数

完整代码

import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

XMIN        = 0.0
XMAX        = 1.0
YMIN        = 1000.0
YMAX        = 2000.0
RATIO       = 5.0
NUM_COLORS  = 256

# 仅使用RGB定义颜色,移除原有的alpha通道
color_list      = ([0.2, 0.88, 0.3], [0.33, 1.0, 0.25], [0.7, 0.2, 0.5], [0.0, 0.34, 0.2], [0.5, 0.9, 0.1])
bounds          = [YMIN, 1100.0, 1400.0, 1800.0, YMAX]
color_tuples    = [(i, color) for i, color in zip(np.interp(bounds, [bounds[0], bounds[-1]], [0, 1]), color_list)]
fig, ax         = plt.subplots(1, 1, figsize = (4, 10), num = "Variable opacity by Y")
segm_cmap       = mpl.colors.LinearSegmentedColormap.from_list("Segm_cmap", color_tuples, N = NUM_COLORS)
norm            = plt.Normalize(vmin = bounds[0], vmax = bounds[-1])

# 生成与图像每行对应的Y值数组(和图像数据shape一致:(NUM_COLORS, 1))
y_pixels = np.linspace(YMIN, YMAX, NUM_COLORS).reshape(-1, 1)
# 定义透明度区间条件及对应值
conditions = [
    y_pixels <= 1200,          # YMIN ~ 1200
    (y_pixels > 1200) & (y_pixels <= 1500),  # 1200 ~ 1500
    y_pixels > 1500            # 1500 ~ YMAX
]
alpha_values = [1.0, 0.5, 0.1]
# 生成最终的alpha数组
alpha_array = np.select(conditions, alpha_values)

# 传入alpha数组到imshow
img             = ax.imshow(np.linspace(YMIN, YMAX, NUM_COLORS).reshape(-1, 1), 
                            cmap = segm_cmap, norm = norm, interpolation = "bilinear",
                            origin = "lower", extent = [XMIN, XMAX, YMIN, YMAX],
                            alpha=alpha_array)
ax.set_aspect((XMAX - XMIN) / (YMAX - YMIN) * RATIO)

plt.show()

扩展说明

  • 如果需要调整透明度区间,只需修改conditions和alpha_values列表即可,支持任意数量的连续/不连续Y区间
  • 该方法兼容你的Python 3.10.12和Matplotlib 3.5.1环境
  • 颜色渐变逻辑保持和你原代码一致,仅将透明度控制独立拆分出来

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 00:48:12