绘制图像时,在绘制图像时尚未知道范围

时间:2018-05-16 19:23:13

标签: python image matplotlib plot axis

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

The curve fit probably isn't the best you've seen. That's ok.

如您所见,轴刻度显示图像坐标。散点图和线图也在图像坐标中给出 - 这是不希望的。在没有背景图像的情况下,散点图和线图仍然可以工作(并且有意义)。范围未知,因为该数字首先用于确定范围(交互式)。

相反,我想指定背景图像中显示的坐标系中的散点图和线图(单位m³/ h和m):从图像坐标到“顶部轴”坐标的变换将是粗略的( 110,475) - > (0,10)和(530,190) - > (8,40)。

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

  • 添加后指定图像范围。但是,我没有在任何地方看到这种情况;此示例显示了在调用imshow()时已知范围时的完成情况:Plot over an image background in python
  • 使用twinx twin y在图像轴顶部添加轴,其中x,x和y,y对紧密耦合。我只看到了允许我指定共享x 共享y轴的功能,而不是两者。

1 个答案:

答案 0 :(得分:1)

这里的限制似乎是“散点图和线图仍然可以在没有背景图像的情况下工作(并且有意义)。”但是,这并不意味着您不能使用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=[...])