【问题标题】:How to Center an Image matplotlib如何使图像居中 matplotlib
【发布时间】:2020-11-04 11:52:15
【问题描述】:

我在 matplotlib 中有一个图表,我想在上面叠加图像。目前我正在使用 OffsetImage 这样做:

team_logo = (os.getcwd() + "\Team_Logos"'\\' + data['posteam'].iloc[0] + '.png')
team_logo = plt.imread(team_logo)
team_logo = OffsetImage(team_logo, zoom=0.50)
team_logo.set_offset((2800, 2800))
ax.add_artist(team_logo)

但我想让图像居中而不是 team_logo.set_offset((2800, 2800)) 行。我有不同大小的图像,我想在不同的时间使用,因此为我创建的每个图形手动将((2800,2800) 更改为不同的坐标并不是一个好的解决方案。我还在使用plt.savefig()dpi=400 作为我的最终图像。

实际的图形本身始终是 120 x 53.3 的图形(x x y),但由于某种原因,OffsetImage 的叠加图像在 plt.show() 中的显示方式与在 plt.savefig() 中的显示方式不同,所以我可以不要只使用((60,26.65))

有谁知道我是否有办法让我的图像在我保存到图像的情节上居中?如果有更好的方法,我不必使用 OffsetBox。谢谢!

【问题讨论】:

    标签: python matplotlib graph data-visualization offset


    【解决方案1】:

    基于this tutorial,最简单的可能是使用AnnotationBbox:

    from matplotlib.offsetbox import OffsetImage, AnnotationBbox
    
    img = plt.imread('https://upload.wikimedia.org/wikipedia/commons/thumb/9/95/Ada_Lovelace_color.svg/200px-Ada_Lovelace_color.svg.png', format='png')
    
    fig, ax = plt.subplots()
    
    imagebox = OffsetImage(img, zoom=0.4)
    imagebox.image.axes = ax
    
    ab = AnnotationBbox(imagebox, (0.5, 0.5), xycoords='axes fraction',
                        bboxprops={'lw':0})
    
    ax.add_artist(ab)
    
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-28
      • 2016-04-23
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      相关资源
      最近更新 更多