在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.AnchoredOffsetbox
和matplotlib.offsetbox.OffsetImage
之间的混合可以解决问题,但我显然不熟悉这些类。
答案 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()
事实上,AnnotationBbox
可以完成所需的一切,而且还有很多选项。