我正在使用maplotlib
的{{1}}绘制世界地图,并希望包含经度和纬度线。可以使用Basemap
和drawmeridians()
来完成,但是只能通过关键字drawparallels()
设置相应行的线型。根据文档,请参阅see here,它应如下工作:
子午线的虚线图案(默认为[1,1],即打开1个像素,关闭1个像素)
我尝试了dashes
,但没有成功。有没有简单的方法可以使线条样式牢固?
这是我的代码:
dashes=[1,0]
编辑1 :我只是在另一台计算机上尝试过,并且可以在其中运行,即import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.basemap import Basemap
fig1, ax1 = plt.subplots(1,1)
map1 = Basemap( resolution='l', projection='mill',
llcrnrlat=-60., llcrnrlon=-180.,
urcrnrlat=90., urcrnrlon=180. )
map1.drawcoastlines()
map1.drawmapboundary( fill_color='aqua' )
map1.fillcontinents( color='coral', lake_color='aqua' )
# labels=[left,right,top,bottom]
map1.drawparallels( np.arange(-80.,81.,20.), labels=[True,True,False,False] )
map1.drawmeridians( np.arange(-180.,181.,40.), labels=[False,False,True,True] )
plt.show()
的线条样式为实线。该计算机上使用的版本是(根据dashes=[1,0]
)
pip freeze
basemap==1.2.0
一旦我可以再次访问原始计算机,我将检查那里发生了什么(以及安装了哪些版本)。
编辑2 :回到无法正常工作的计算机上,我现在可以谈谈更多。首先,使用以下版本:
matplotlib==2.2.3
basemap==1.1.1
然后显示错误消息(我之前忘记包含此错误消息):
ValueError:破折号列表中的所有值都必须为正值
编辑3 :为了完整起见(并且由于在某种程度上有助于寻找解决方案),请参见完整的matplotlib==3.0.2
:
Traceback
答案 0 :(得分:1)
在对github上的一些bug报告进行了研究之后,我找到了解决方案[1],dashes=(None,None)
:
map1.drawmeridians( np.arange(-180.,181.,40.), labels=[False,False,True,True], dashes=(None,None) )
[1] https://github.com/matplotlib/basemap/issues/173#issuecomment-68243710