在给定的XY边界之间的Matplotlib图中显示图像

时间:2014-03-09 21:04:48

标签: python image matplotlib plot

我已经从期刊论文中实现了一个数字模型,并希望使用Python和Matplotlib从期刊论文pdf中绘制我的版本。我在纸张pdf中截取了该图,并将其裁剪为边界(x1,y1)和(x2,y2),以毫米和牛顿为单位。情节可以是任何格式(jpg,png,等等)。

现在,我想在Matplotlib的绘图区域后面显示该图像,总图形尺寸范围从(0,0)到(x3,y3),再次分别以毫米和牛顿为单位测量。图像仅占据图上空间的子集,并且应缩放以适合由边界(x1,y1)和(x2,y2)定义的框。边界(x1,y1)和(x2,y2)不一定与图像的原始纵横比匹配,因此必须在x和y中独立地缩放图像以适合。我不希望我的绘图与源图像中绘图的原始高宽比相关联。

如何将此图像映射到绘图上的物理空间?

1 个答案:

答案 0 :(得分:2)

基本上,请使用extent kwarg to imshow。如果您希望纵横比不设置为1,您还需要autoscale='auto'

作为一个简单的例子:

import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

x = np.linspace(2, 8, 100)
y = np.cos(x)

x1, x2 = 3, 5.6
y1, y2 = -2.8, 9.6
im = np.array(Image.open('grace_hopper.jpg'))

fig, ax = plt.subplots()
ax.imshow(im, extent=[x1, x2, y1, y2], aspect='auto', cmap='gray')
ax.plot(x, y)
plt.show()

enter image description here