Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib底图绘制横向/纵向坐标不正确_Python_Matplotlib_Matplotlib Basemap - Fatal编程技术网

Python matplotlib底图绘制横向/纵向坐标不正确

Python matplotlib底图绘制横向/纵向坐标不正确,python,matplotlib,matplotlib-basemap,Python,Matplotlib,Matplotlib Basemap,我试图学习matplotlib和映射函数Basemap,并试图在地图上绘制一个简单的纵横坐标列表。然而,将底图坐标转换为简单的x/y坐标会在地图上绘制出大量的点,我不知道为什么。我的代码如下: locationData = parseFile(locationFile) fig = plt.figure(figsize=(8,8)) m = Basemap(projection='merc', resolution='h', llcrnrlat=49, llcrnrlo

我试图学习matplotlib和映射函数Basemap,并试图在地图上绘制一个简单的纵横坐标列表。然而,将底图坐标转换为简单的x/y坐标会在地图上绘制出大量的点,我不知道为什么。我的代码如下:

locationData = parseFile(locationFile)

fig = plt.figure(figsize=(8,8))
m = Basemap(projection='merc', resolution='h',
            llcrnrlat=49, llcrnrlon=-13.5,
            urcrnrlat=59.5, urcrnrlon=4)
m.drawcoastlines()
m.drawmapboundary(fill_color='aqua')
m.fillcontinents(color='green', lake_color='aqua')

index=0
for entry in locationData:
    lat = entry["latitudeE7"]/1E7
    long = entry["longitudeE7"]/1E7
    x,y = m(lat, long)
    print("Plotting {} {} to x{} y{}".format(lat,long,x,y))
    plt.plot(x,y, 'ok', markersize=20)
    # break at 30 points for testing
    if index>30: break
    index+=1
plt.show()
这是我从print语句得到的输出:

Plotting 52.------- 1.------- to x79364--.------- y-31476--.-------
Plotting 52.------- 1.------- to x79368--.------- y-31475--.-------
Plotting 52.------- 1.------- to x79362--.------- y-31471--.-------
Plotting 52.------- 1.------- to x79361--.------- y-31472--.-------
Plotting 52.------- 1.------- to x79360--.------- y-31475--.-------
Plotting 52.------- 1.------- to x79365--.------- y-31476--.-------
Plotting 52.------- 1.------- to x79361--.------- y-31476--.-------
...
出于明显的原因,我对精确值进行了删减,但您可以看到,指向英国的52°N 1°E的预期值被放在了图表之外,这是英国的。将地图扩展到全球,可以看出它正在绘制马达加斯加北海岸以外的点

我从谷歌位置历史下载中获取坐标,然后将其除以10^7,因为它们存储为整数。print语句显示这些代码被正确解析

我不熟悉matplotlib和basemap,并且在Windows 10上运行Python 3.6。有什么帮助吗

编辑-发布我的旧代码我的错误

使用参数lon调用Basemap类实例,lat将lon/lat(以度为单位)转换为x/y贴图投影坐标(以米为单位)。如果可选关键字inverse为True(默认值为False),则执行从x/y到lon/lat的逆变换

而不是
x,y=m(lat,long)
因此您需要

x,y = m(long, lat)

我是个白痴。非常感谢