如何在python中使用图像修改某些轴的属性?

如何在python中使用图像修改某些轴的属性?,python,numpy,matplotlib,Python,Numpy,Matplotlib,我有一个python的图像。这是一张加利福尼亚的地图,我需要在这张地图上画一些点 从csv检索每个点的坐标。但每个坐标的值都以纬度/经度为单位。所以,我需要把它转换成我的图片的尺寸 下面是对我的情况的描述: 将numpy作为np导入 将matplotlib.pyplot作为plt导入 将matplotlib.image导入为mpimg 已保存图形的dpi:https://stackoverflow.com/a/34769840/3129414 dpi=120 img=mpimg.imreadca

我有一个python的图像。这是一张加利福尼亚的地图,我需要在这张地图上画一些点

从csv检索每个点的坐标。但每个坐标的值都以纬度/经度为单位。所以,我需要把它转换成我的图片的尺寸

下面是对我的情况的描述:

将numpy作为np导入 将matplotlib.pyplot作为plt导入 将matplotlib.image导入为mpimg 已保存图形的dpi:https://stackoverflow.com/a/34769840/3129414 dpi=120 img=mpimg.imreadcalifornia\u map\u blank.png 高度、宽度、频带=img.shape 根据图像大小更新体形大小 figsize=宽度/浮动dpi,高度/浮动dpi 创建一个大小合适的图形,其中一个轴占据整个图形 figure=plt.figurefigsize=figsize 轴=图。添加轴[0,0,1,1] 画图像 axes.imshowimg,插值='nearest' 结果如下:

首先,我需要修改y轴。我需要反转它,使0从底部开始。然后我需要修改轴的值,y轴为[31,42],x轴为[-123,-114]。因为我想放在这张地图上的点都在这个范围内。坐标的一个示例:41.76440000093729,-124.1998

现在是我的问题。有可能做到这一点吗?怎么做

PS:我使用Python3.6,我已经知道如何在图像上放置点。我不需要保存仅显示的图像

PPS:事实上,我的最终目标是将lat/lon数据转换为图片中的坐标,所以如果您知道用Python进行转换的其他方法,当然请告诉我

编辑:如果我应用这个:axes.set_xlim-124.5,-114它给我这个:

我想让轴在这个范围内,但整个图像

事实上,在最后我不会显示轴,我只会把点放在地图上,但我需要把点放在地图上,所以我想我需要完成这一步


EDIT2:我尝试了以下方法:axis.imshowimg[::-1],origin='lower',interpolation='nearest'可以很好地反转轴,但当我绘制一个点时,python会在轴正常时的相同位置绘制它。

您需要通过imshow的extent=参数设置图像的限制。对于左右经度,以及底部和顶部的纬度,这些应该是非常精确的值

根据贴图的变形程度,结果可能足够好,也可能不够好。尝试查找地图各角的准确经度和纬度,例如通过谷歌地图

根据Python程序的运行方式,matplotlib将显示交互式绘图。可以缩放到每个区域,轴将自适应。在底部的条形图中,将显示x和y位置。如果它们不是所需的范围,可以尝试更改范围,直到它们匹配为止

将matplotlib.pyplot作为plt导入 将matplotlib.image导入为mpimg img=mpimg.imreadcalifornia\u map\u blank.png dpi=120 高度、宽度、频带=img.shape 根据图像大小更新体形大小 figsize=宽度/浮动dpi,高度/浮动dpi 创建一个大小合适的图形,其中一个轴占据整个图形 图,ax=plt。子批次尺寸=figsize 找到范围 经度\上\左=-124.5 经度\顶部\右侧=-113 纬度\底部\左侧=32 纬度\顶部\左侧=42 范围=[经度左上,经度右上,纬度左下,纬度左上] 画图像 ax.imshowimg,插值=‘最近’,范围=范围 节目
你能给出一个将lat/long坐标与所需图像坐标相关联的方程式吗?如果不是,那么你就有一个数学问题,而不是一个编程问题。事实上,我试图用一个方程组,从2个不同点的值构造一个2变量的数学函数,但我发现一个结果,对某一点给了我很好的希望,但对另一点给了我很大的误差,所以我放弃了数学方法。但是,现在我想我只需要用y轴和x轴的极值建立一个方程组。然后我会回到这里。但即使我这样做了,我至少需要反转y轴,以正确地将点放在上面。一个有两个变量的方程组不会给我极值解,所以如果你有另一个命题,告诉我,我会继续在数学域中搜索