【问题标题】:Display image within Matplotlib plot between given XY bounds在给定 XY 边界之间的 Matplotlib 图中显示图像
【发布时间】:2014-03-10 21:08:01
【问题描述】:

我已经从期刊论文中实现了一个数值模型,并希望使用 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 中独立缩放图像以适应。我不希望我的绘图与源图像中绘图的原始纵横比相关联。

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

【问题讨论】:

  • 这不是和stackoverflow.com/questions/5073386/…完全一样的问题吗?
  • 该示例以像素尺寸绘制 jpg 和点。我想将类似 800x600 像素的图像映射到 6 毫米宽和 2 牛顿高(以轴为单位测量)的图形区域。

标签: python image matplotlib plot


【解决方案1】:

基本上,使用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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2013-09-07
    • 2020-04-02
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多