Python 在图像上打印,打印图像时范围未知

Python 在图像上打印,打印图像时范围未知,python,image,matplotlib,plot,axis,Python,Image,Matplotlib,Plot,Axis,我想创建一个图形,显示具有重叠散射和线图的背景图像: 如您所见,轴标记显示图像坐标。散点图和线图也用图像坐标表示,这是不需要的。在没有背景图像的情况下,散点图和线图应该仍然可以工作(并且是有意义的)。范围未知,因为此图首先用于确定范围(以交互方式) 相反,我希望在背景图像中显示的坐标系中指定散点图和直线图(单位为m³/h和m):从图像坐标到“顶部轴”坐标的转换大约为(110475)->(0,10)和(530190)->(8,40) 原则上,我可以看到两种方法: 添加图像后指定图像范围。然而,

我想创建一个图形,显示具有重叠散射和线图的背景图像:

如您所见,轴标记显示图像坐标。散点图和线图也用图像坐标表示,这是不需要的。在没有背景图像的情况下,散点图和线图应该仍然可以工作(并且是有意义的)。范围未知,因为此图首先用于确定范围(以交互方式)

相反,我希望在背景图像中显示的坐标系中指定散点图和直线图(单位为m³/h和m):从图像坐标到“顶部轴”坐标的转换大约为(110475)->(0,10)和(530190)->(8,40)

原则上,我可以看到两种方法:

  • 添加图像后指定图像范围。然而,我在任何地方都没有看到这方面的记录;此示例显示了在调用
    imshow()
    时已知区段时如何执行此操作:
  • 在具有twinx和twin y的图像轴的顶部添加一个轴,其中x、x和y、y对紧密耦合。我只看到了允许我指定共享x轴或共享y轴的功能,而不是两者

这里的限制似乎是“散射图和线图在没有背景图像的情况下仍然可以工作(并且是有意义的)。”。但是,这并不意味着您不能使用
extent
关键字参数

在添加图像时,您需要指定范围

plt.scatter(...)
plt.plot(...)
plt.imshow(..., extent = [...])
如果出于问题中未解释的原因需要设置范围,也可以稍后设置范围,即

plt.scatter(...)
plt.plot(...)
im = plt.imshow(...)

im.set_extent([...])
最后,您还可以决定删除图像,并再次打印;这一次,在所需的范围内

plt.scatter(...)
plt.plot(...)
im = plt.imshow(...)

im.remove()
im = plt.imshow(..., extent=[...])

感谢您指出,问题中遗漏了之前未知范围的原因。我已经添加了这一点。在调用imshow后仅设置范围会导致图像失真(窄/高),因为实际的x范围小于y范围。从某种角度来看,这可能是有意义的,但我希望图像保持其纵横比。这将由
纵横比决定。您可以将其设置为
aspect=“auto”
或您需要的任何其他号码。