如何使用“范围”在 matplotlib.pyplot.imshow 中

发布于 2024-11-28 13:59:51 字数 201 浏览 2 评论 0原文

我设法绘制了我的数据,并想为其添加背景图像(地图)。 数据是按长/纬度值绘制的,我也有图像三个角(左上角、右上角和左下角)的长/纬度值。

我试图弄清楚如何在 imshow 中使用“范围”选项。然而,我发现的例子并没有解释如何为每个角分配 x 和 y (在我的例子中,我有三个角的信息)。

将图像添加到绘图时如何指定图像的三个角的位置?

谢谢

I managed to plot my data and would like to add a background image (map) to it.
Data is plotted by the long/lat values and I have the long/lat values for the image's three corners (top left, top right and bottom left) too.

I am trying to figure out how to use 'extent' option with imshow. However, the examples I found don't explain how to assign x and y for each corner ( in my case I have the information for three corners).

How can I assign the location of three corners for the image when adding it to the plot?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

℡Ms空城旧梦 2024-12-05 13:59:52

在当前轴的坐标中指定要将图像粘贴到的矩形的角。

范围定义左侧和右侧限制以及底部和顶部限制。它采用四个值,如下所示:extent=[horizo​​ntal_min,horizo​​ntal_max,vertical_min,vertical_max]。

假设您有沿水平轴的经度,则使用 extent=[longitude_top_left,longitude_top_right,latitude_bottom_left,latitude_top_left]。 longitude_top_left 和 longitude_bottom_left 应该相同,latitude_top_left 和 latitude_top_right 应该相同,并且这些对中的值可以互换。

如果图像的第一个元素应绘制在左下角,请同时使用 origin='lower' imshow 选项,否则“upper”默认值就是您想要的。

Specify, in the coordinates of your current axis, the corners of the rectangle that you want the image to be pasted over

Extent defines the left and right limits, and the bottom and top limits. It takes four values like so: extent=[horizontal_min,horizontal_max,vertical_min,vertical_max].

Assuming you have longitude along the horizontal axis, then use extent=[longitude_top_left,longitude_top_right,latitude_bottom_left,latitude_top_left]. longitude_top_left and longitude_bottom_left should be the same, latitude_top_left and latitude_top_right should be the same, and the values within these pairs are interchangeable.

If your first element of your image should be plotted in the lower left, then use the origin='lower' imshow option as well, otherwise the 'upper' default is what you want.

日暮斜阳 2024-12-05 13:59:52

这是一个基于 http://matplotlib.org/examples/pylab_examples/image_demo3.html 显示使用范围。

#!/usr/bin/env python
from pylab import *
try:
    from PIL import Image
except ImportError, exc:
    raise SystemExit("PIL must be installed to run this example")

import matplotlib.cbook as cbook

datafile = cbook.get_sample_data('ada.png')
h = Image.open(datafile)
dpi = rcParams['figure.dpi']
figsize = h.size[0]/dpi, h.size[1]/dpi

figure(figsize=figsize)
ax = axes([0,0,1,1], frameon=False)
ax.set_axis_off()
ax.set_xlim(0,2)
ax.set_ylim(0,2)
im = imshow(h, origin='upper',extent=[-2,4,-2,4])  # axes zoom in on portion of image
im2 = imshow(h, origin='upper',extent=[0,.5,0,.5]) # image is a small inset on axes

show()

如果您不设置轴限制,它们将成为您的范围和范围。然后似乎没有任何效果。

艾达·洛夫莱斯图片带插图

Here's an example based on http://matplotlib.org/examples/pylab_examples/image_demo3.html showing use of extent.

#!/usr/bin/env python
from pylab import *
try:
    from PIL import Image
except ImportError, exc:
    raise SystemExit("PIL must be installed to run this example")

import matplotlib.cbook as cbook

datafile = cbook.get_sample_data('ada.png')
h = Image.open(datafile)
dpi = rcParams['figure.dpi']
figsize = h.size[0]/dpi, h.size[1]/dpi

figure(figsize=figsize)
ax = axes([0,0,1,1], frameon=False)
ax.set_axis_off()
ax.set_xlim(0,2)
ax.set_ylim(0,2)
im = imshow(h, origin='upper',extent=[-2,4,-2,4])  # axes zoom in on portion of image
im2 = imshow(h, origin='upper',extent=[0,.5,0,.5]) # image is a small inset on axes

show()

If you don't set your axis limits, they become your extents & then don't seem to have any effect.

Ada Lovelace image with inset

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文