Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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 基础图蓝色大理石绘制相对的纵断面_Python_Matplotlib Basemap - Fatal编程技术网

Python 基础图蓝色大理石绘制相对的纵断面

Python 基础图蓝色大理石绘制相对的纵断面,python,matplotlib-basemap,Python,Matplotlib Basemap,我正在尝试使用basemap的bluemarble()函数以以下方式绘制地图背景: import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap lats=[-25,66] lons=[60,187] fig=plt.figure();ax=fig.add_subplot(111) bmap=Basemap(projection='merc',\ llcrnrlat=lats[0],llcr

我正在尝试使用basemap的
bluemarble()
函数以以下方式绘制地图背景:

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

lats=[-25,66]
lons=[60,187]

fig=plt.figure();ax=fig.add_subplot(111)

bmap=Basemap(projection='merc',\
        llcrnrlat=lats[0],llcrnrlon=lons[0],\
        urcrnrlat=lats[1],urcrnrlon=lons[1]-360.,\
        lon_0=(lons[0]+lons[1])/2.,\
        ax=ax)

bmap.bluemarble()
plt.show()
我认为这是因为域正在跨越日期线,它给出了一个x轴翻转的地图

如果我交换
llcrnrlon
urcrnlon

bmap=Basemap(projection='merc',\
        llcrnrlat=lats[0],llcrnrlon=lons[1]-360.,\
        urcrnrlat=lats[1],urcrnrlon=lons[0],\
        lon_0=(lons[0]+lons[1])/2.,\
        ax=ax)
地图显示了正确的方向,但显示了错误的区域。我想展示印度洋、欧亚和西太平洋,但地图显示了剩余的经度,覆盖了中东太平洋、美洲大陆和大西洋。
lonu 0
参数似乎没有任何作用


请提供帮助。

您需要绘制两张在日期线连接的地图:

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

lats1=[-25, 66]
lons1=[60, 179.95]

fig=plt.figure()
#fig.set_size_inches((7.5, 6))
fig.set_size_inches((10, 9))

ax1=fig.add_subplot(121)
ax2=fig.add_subplot(122)


bmap=Basemap(projection='merc',\
        llcrnrlat=lats1[0], llcrnrlon=lons1[0],\
        urcrnrlat=lats1[1], urcrnrlon=lons1[1],\
        lon_0=(lons1[0]+lons1[1])/2.,\
        ax=ax1)

bmap.bluemarble(ax = ax1)

ax1.set_position([0, 0, 0.8, 1])

lats2=[-25,66]
lons2=[-179.95, -150]
bmap=Basemap(projection='merc',\
        llcrnrlat=lats2[0], llcrnrlon=lons2[0],\
        urcrnrlat=lats2[1], urcrnrlon=lons2[1],\
        lon_0=(lons2[0]+lons2[1])/2.,\
        ax=ax2)

bmap.bluemarble(ax = ax2)
ax2.set_position([0.8, 0, 0.2, 1])

ax1.set_aspect('auto')
ax2.set_aspect('auto')

ax1.set_adjustable('datalim')
ax2.set_adjustable('datalim')

plt.show()

谢谢,你救了我一天。那是个聪明的主意。更好的是,添加“ax1.axis('off');ax2.axis('off')`删除日期线处的垂直线。