2015-10-14 81 views
1

所以我试图在pycharm IDE中使用python在Equirectangular地图投影上绘制陨石撞击(作为标准图像加载)是通过时间递增来“动画”,以显示从1500年至今的50年期间的影响。使用散点图和世界地图图像在地图上显示流星的影响,长宽比问题

要做到这一点,我使用经过标准化(表示在0 - 1之间)的经纬度坐标(从NASA csv文件)到散点图上的绘图点的元组列表,然后与地图重叠图片。

简码解释: 在第一部分中,normalize_lat_lon从我写的数据处理文件中提取,该文件对经度和纬度进行了归一化处理。

影响是Year,Lat,Lon的元组列表。 img是分辨率为2048 x 1025 的世界地图图片1.998 * a是我尝试纠正我所拥有的比率问题。 由于x值乘以1.998(2048/1025) 的分辨率几乎为2:1,理论上应该允许我相应地进行绘图。

这是主要的部分代码:

lat_lon = [data.normalise_lat_lon(b, c) fpr a, b, c in impacts] 
x, y = [1.998*a for a, b in lat_lon], [b for a, b in lat_lon] 

plt.scatter(x, y, s=200, color='red') 
plt.imshow(img) 

我的问题是缩放散点图与世界地图图像来排队。 使用上面的修补程序乘以1.998 * a似乎将所有散点图卡在左上角,如下所示。

Meteorite Impacts MCV:代码的简化版本,而无需通过其他时间段循环或需要从核苷酸酶文件标准化纬度的经度

from matplotlib import pyplot as plt 

plt.ion() 
plot.title("Meteorite Impacts 1990 - 2000") 

impacts = [(1994, 0.5, 0.3),(1991, 0.4, 0.3),(1998, 0.1, 0.1),(1992, 0.8, 
0.8)] 
lat_lon = [(b, c) for a, b, c in impacts] 
x, y = [1.9*a for a, b in lat_lon], [b for a, b in lat_lon] 
plt.imread("Equirectangular-projection.jpg") 
plt.scatter(x, y) 
plt.show() 

我可以把HTTPS对项目的混帐其他人克隆/分叉,不知道我是否被允许这样做。

+0

据我的理解,你不能这样做。您拥有的坐标轴不是Lat-Lon,您需要使用适当的地理库来执行此操作。请查看底图:https://basemaptutorial.readthedocs.org/en/latest/ – user4421975

+0

FWIW,NASA equirectangular地图具有正确的宽高比。我建议编辑你的背景图像:或者只是裁剪多余的像素行,或者缩放x2,在顶部和底部裁剪一行,然后向下缩小。 –

+0

一个[MCVE](http://stackoverflow.com/help/MCVE)将在这里帮助 – tom

回答

0

所以原因有两个。

1 - 的imshow()由像素函数图像素,所以我不得不通过即有相应的轴的分辨率(2048×1025)

2乘以x上的ÿ - 我也有纬度和经度confuzzled,匝out long is x and lat is y