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

如何使matplotlib图表部分区域透明?及背景图设置优化咨询

解决方案

一、实现0以下区域透明显示背景

可以通过fill_between函数的where参数精准控制填充范围,仅对数值≥0的区域进行填充,0以下区域自动透明以显示背景。示例代码如下:

import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据
x = np.linspace(-10, 10, 200)
y = np.sin(x) * 3 + np.random.randn(200)*0.5

fig, ax = plt.subplots(figsize=(8, 4))
# 设置轴背景(以纯色模拟背景图效果)
ax.set_facecolor('#e8f4f8')

# 仅填充y≥0的区域,y<0区域直接显示背景
ax.fill_between(x, y, 0, where=(y >= 0), color='#4a90e2', alpha=0.6)
# 绘制曲线
ax.plot(x, y, color='#2c3e50', linewidth=1.5)

# 调整坐标轴范围适配数据
ax.set_ylim(-4, 4)
plt.tight_layout()
plt.show()

如果你的填充基准不是y=0,只需将代码中的0替换为对应的基准值即可。

二、优化边框背景图的设置方式

无需创建额外轴对象,直接在当前绘图轴上使用imshow函数即可添加背景图,步骤简洁且避免多轴对齐问题:

import matplotlib.pyplot as plt
import numpy as np

# 生成数据
x = np.linspace(0, 10, 100)
y = np.cos(x) * 2

fig, ax = plt.subplots()
# 加载背景图片(支持png、jpg等主流格式)
bg_img = plt.imread('your_background_image.png')
# 在轴上显示背景图,extent参数指定图片覆盖的坐标轴范围
ax.imshow(bg_img, extent=[x.min(), x.max(), y.min(), y.max()], 
          aspect='auto', alpha=0.3)  # aspect='auto'保证图片适配轴比例

# 绘制前景内容
ax.fill_between(x, y, 0, where=(y >= 0), color='#ff6b6b', alpha=0.7)
ax.plot(x, y, color='#2d3436')

plt.tight_layout()
plt.show()

通过alpha参数可调整背景图透明度,避免遮挡前景的曲线和填充区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:13:39