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

使用Seaborn与Matplotlib为CVGA散点图添加背景图显示异常如何解决

问题根源

显示异常有两个核心原因:

  1. ax.imshow()默认使用图片的像素坐标作为绘图坐标轴范围,会直接覆盖之前设置的xlim和ylim,导致散点坐标和背景坐标完全不匹配
  2. 未设置背景图的显示比例和层级,导致图片变形、遮挡散点

解决方案

调整imshow的参数,让背景图完全适配你指定的坐标轴范围,修改后代码如下:

import matplotlib.pyplot as plt
import seaborn as sns

img = plt.imread('CVGA.png')
fig, ax = plt.subplots(figsize = (12,6))
sns.scatterplot(
    data=min_max_day,
    x=min_max_day['Glucose Value (mg/dL)']['amin'],
    y=min_max_day['Glucose Value (mg/dL)']['amax'], 
    zorder=2
)
# 先设置你需要的坐标轴范围
plt.xlim(110,40)
plt.ylim(110,400)
# 插入适配坐标轴的背景图
ax.imshow(
    img,
    # extent参数格式为[坐标轴左端点x值, 坐标轴右端点x值, 坐标轴底端y值, 坐标轴顶端y值],和上面设置的lim完全对应
    extent=[110, 40, 110, 400],
    aspect='auto', # 自动适配坐标轴比例,避免图片拉伸变形
    zorder=1 # 确保背景在散点图层下方
)
plt.show()

补充优化建议

如果需要保证背景图内的网格为正方形(即x、y轴每1mg/dL的显示长度一致,网格和血糖值对应关系更准确),可做如下调整:

  • 将aspect参数值改为1
  • 按x、y轴的数值范围比例调整figsize:你的x轴数值跨度为70(40110),y轴数值跨度为290(110400),因此figsize可设置为等比例的(7, 29)或缩放后的(5, 20.7)即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 11:09:02