在当前图上插入图像而不变形

时间:2015-07-27 12:02:33

标签: python matplotlib

在matplotlib中,在特定数据位置的现有轴内,以原始宽高比和可选的原始大小绘制图像的最合适方法是什么?

例如:

from matplotlib.pyplot import plot
from matplotlib.image import imread
from matplotlib.cbook import get_sample_data

plot([50,60],[1000,2000])
im = imread(get_sample_data("grace_hopper.png", asfileobj=False)) 

现在我想以im为例,以坐标(57,1200)为中心,并使用一些缩放或最大高度而不会变形。

我认为matplotlib.offsetbox.AnchoredOffsetboxmatplotlib.offsetbox.OffsetImage之间的混合可以解决问题,但我显然不熟悉这些类。

1 个答案:

答案 0 :(得分:2)

正如所料,解决方案位于matplotlib.offsetbox模块:

from matplotlib.pyplot import plot, gca, show
from matplotlib.image import imread
from matplotlib.cbook import get_sample_data
from matplotlib.offsetbox import OffsetImage, AnnotationBbox

plot([50,60],[1000,2000])
im = imread(get_sample_data("grace_hopper.png", asfileobj=False))    
oi = OffsetImage(im, zoom=0.1)
ab = AnnotationBbox(oi, (57, 1200), xycoords='data', frameon=False)
gca().add_artist(ab)
show()

结果如下: Well scaled and positioned image inside current plot

事实上,AnnotationBbox可以完成所需的一切,而且还有很多选项。