等高线图 - 标签间距

7
我在使用matplotlib / pyplot / basemap时遇到了问题。我在地图上绘制等值线(气压)。我使用clabel来显示等值线的数值。 但问题是:数值和等值线之间的间距太大了。我已经找到了参数"inline_spacing",并将其设置为零。但仍然有太多的空白空间。有什么建议吗?

free space contour label

Python 代码:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import pygrib

filename   = "file.grib2"
grbs       = pygrib.open('/data/' + filename)
grb        = grbs[2]
data       = grb.values
datac      = data*0.01
lats, lons = grb.latlons()

fig = plt.figure()
m = Basemap(projection='stere',lon_0=5,lat_0=90.0,\
            llcrnrlon=-25.0,urcrnrlon=60.0,llcrnrlat=30.0,urcrnrlat=60.0,resolution='l')

x, y = m(lons, lats)

levs = range(940,1065,5)
S1=plt.contour(x,y,datac,levs,linewidths=0.5,colors='b')
plt.clabel(S1,inline=1,inline_spacing=0,fontsize=8,fmt='%1.0f',colors='b')

m.drawmapboundary(fill_color='w')
m.drawcoastlines(linewidth=0.2)

plt.savefig('test.png', bbox_inches='tight',pad_inches=0.05, dpi=100)

1
分享您当前的代码(编辑您的帖子)以获得更多帮助。 - user1767754
获取任何帮助 ;) - Aleksander Lidtke
1
你能添加一张截图吗?这样我们就可以轻松地看到你遇到的问题是什么了。 - sebix
嗨sebix。我已经添加了一张截图。 - mcatis
2个回答

3

"inline_spacing"参数可以设置为负值。虽然会出现警告,但尝试设置为-2或-3可能会解决你的问题。


1
cb = plt.clabel(S1,inline=1,inline_spacing=0,fontsize=8,fmt='%1.0f',colors='b')
[txt.set_bbox(dict(boxstyle='square,pad=0',fc='red')) for txt in cb]

Matplotlib文本类创建一个bbox。您需要设置pad = 0。然后inline_spacing起作用。
请参考问题!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接