消除Python pcolor basemap图中的网格线

1 投票
1 回答
2193 浏览
提问于 2025-04-17 07:47

我正在使用Basemap和pcolor来绘制一个在圆柱投影上的标量场。现在遇到的问题是,网格线被画出来了:我不想看到这些线,只想看到彩色的方块。如果我想要网格线,我应该用pcolormesh,对吧?

帮助文档说,设置edgecolors='none'应该可以去掉这些线(这和现在不再推荐的shading='flat'是一样的)。但在我尝试绘制的真实数据中,这个方法似乎没有效果。

我做了一个测试,在我的地图上方绘制了一个小方块:我只是创建了一个3x3的随机数组和一些合适的经纬度矩阵。在那个小测试区域里,颜色之间的线是看不见的(这正是我想要的);我只是搞不明白为什么,因为我用的技术和真实数据是一样的。

那些多余的网格是黑色的,因为地图的背景是黑色的 map.drawmapboundary(fill_color='0.05'),这里的'map'是一个Basemap对象:

map = Basemap(projection='cyl',
              resolution='l', 
              llcrnrlon=lon_min, 
              llcrnrlat=lat_min, 
              urcrnrlon=lon_max,
              urcrnrlat=lat_max)

当我把背景留成白色时,我看到的是白色的网格,而不是黑色的。

我使用的pcolor命令是:

mymapim = map.pcolor(mapxvals, mapyvals, datafield, edgecolors='none', vmin=-5, vmax=35, cmap=my_cmap)

'datafield'是一个被屏蔽的数组(不确定屏蔽是否可能与此有关)。'map*vals'是比datafield多一行一列的矩阵。

所以我花了很多时间试图搞清楚这个问题,并在网上寻找答案,但我想借此机会向这个社区提问。谢谢任何建议。(我用Python的时间不长)。

我试图附上一个显示问题的图片,但显然在我获得一些声望之前无法上传。

谢谢!

1 个回答

0

我不太确定我是否完全理解了你的问题。这里有一些关于如何在Basemap中使用pcolorimshowcontour的例子。

撰写回答