我已经从期刊论文中实现了一个数字模型,并希望使用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中独立地缩放图像以适合。我不希望我的绘图与源图像中绘图的原始高宽比相关联。
如何将此图像映射到绘图上的物理空间?
答案 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()