在matplotlib的底图中设置经度和纬度线的线型?

时间:2019-02-13 06:27:19

标签: python matplotlib matplotlib-basemap

我正在使用maplotlib的{​​{1}}绘制世界地图,并希望包含经度和纬度线。可以使用Basemapdrawmeridians()来完成,但是只能通过关键字drawparallels()设置相应行的线型。根据文档,请参阅see here,它应如下工作:

  

子午线的虚线图案(默认为[1,1],即打开1个像素,关闭1个像素)

我尝试了dashes,但没有成功。有没有简单的方法可以使线条样式牢固?

这是我的代码:

dashes=[1,0]

这是生成的地图:enter image description here


编辑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

1 个答案:

答案 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