You need to enable JavaScript to run this app. 如何使用colormap为matplotlib的fill_between填充区域设置渐变效果
优惠活动
大模型
产品
解决方案
定价
更多

如何使用colormap为matplotlib的fill_between填充区域设置渐变效果

问题原因

fill_between的cmap参数无法直接生效,是因为你没有指定用于颜色映射的数值序列,该参数仅当你传入可映射的数值维度时才会被调用,原生不支持直接对填充区域做x/y维度的渐变映射。

可行实现方案

这里推荐用imshow生成渐变图层+路径裁剪的方案,代码改动量小,效果稳定:

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon

colourmap = mpl.cm.get_cmap('jet')

xx = np.arange(0,10,0.1)
yy = xx*np.exp(-xx)

fig, ax = plt.subplots()
ax.plot(xx,yy)

# 先获取填充区域的路径
fill_poly = ax.fill_between(xx, yy, alpha=0.3)
verts = fill_poly.get_paths()[0].vertices
clip_poly = Polygon(verts, transform=ax.transData)
# 生成渐变图层,此处为横向渐变,可自行调整渐变方向、映射规则
grad = np.linspace(0, 1, 256).reshape(1, -1)
img = ax.imshow(grad, extent=[xx.min(), xx.max(), yy.min(), yy.max()], cmap=colourmap, aspect='auto', alpha=0.3)
# 把渐变图层裁剪到填充区域范围内
img.set_clip_path(clip_poly)

plt.show()

如果需要渐变和y值绑定,只需要把imshow的渐变数组修改为对应y值的映射序列即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 03:45:05