【问题标题】:Add image to background of plot with Seaborn & Matplotlib使用 Seaborn 和 Matplotlib 将图像添加到绘图背景
【发布时间】:2021-10-14 11:19:54
【问题描述】:

我正在尝试在 Python 中创建控制变量网格分析。该分析需要在散点图上绘制每天的最小和最大血糖值(在本例中是我自己的),并带有有助于对整体血糖控制进行分类的背景图像。见here

我找到了解决这个问题的其他线程,但我似乎无法让它适用于我的应用程序。我需要轴是一个特定的范围,我认为这会干扰图像。目前我尝试过的代码,基于this页面和this页面,如下:

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=1)
plt.xlim(110,40)
plt.ylim(110,400)
ax.imshow(img);

输出如下所示:

删除“ax.imshow(img)”行后,输出如下所示:

其他细节:

  • 我使用的图像是 1200x1200:

  • 我使用的比例尺不是一个完美的正方形,这可能是个问题?不确定这是否有意义,但显然 Y 轴上的 110 到 400 和 X 轴上的 100 到 40 不会形成完美的正方形?我不确定该怎么做。

任何建议或帮助将不胜感激。非常感谢。

【问题讨论】:

    标签: python matplotlib seaborn


    【解决方案1】:
    import matplotlib.pyplot as plt
    import seaborn as sns
    import numpy as np  # sample data
    
    img = plt.imread('CVGA.png')
    fig, ax = plt.subplots(figsize=(6, 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=1)
    
    sns.scatterplot(x=np.linspace(110, 41, 10), y=np.linspace(110, 401, 10), ax=ax)
    plt.xlim(110, 40)
    plt.ylim(110, 400)
    
    ax.imshow(img, extent=[110, 40, 110, 400], aspect='auto')
    

    【讨论】:

    • 非常感谢。 'aspect=auto' 是我所缺少的。你是最棒的!
    • @walker967 不客气。很高兴这对你有用。
    猜你喜欢
    • 2013-02-16
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    相关资源
    最近更新 更多