Контурный график Pyplot - расстояние между клабелями

У меня проблемы с matplotlib/pyplot/basemap. Я наношу контурные линии (атмосферное давление) на карту. Я использую clabel, чтобы показать значение контурных линий. Но проблема в том, что отступ между значением и линией контура слишком велик. Я нашел параметр "inline_spacing", который я установил на ноль. Но свободного места еще много. Любые идеи?

метка контура свободного пространства

Код 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)

Спасибо.


person mcatis    schedule 30.11.2014    source источник
comment
поделитесь своим текущим кодом (отредактируйте сообщение), чтобы получить дополнительную помощь   -  person user1767754    schedule 01.12.2014
comment
Чтобы получить любую помощь ;)   -  person Aleksander Lidtke    schedule 01.12.2014
comment
Не могли бы вы добавить скриншот, чтобы мы могли легко увидеть, с какой проблемой вы столкнулись?   -  person sebix    schedule 01.12.2014
comment
Привет себикс. я добавил скриншот   -  person mcatis    schedule 02.12.2014


Ответы (2)


Параметр "inline_spacing" может иметь отрицательные значения. Это дало мне предупреждение, но попытка -2 или -3, вероятно, должна решить вашу проблему.

person David Manheim    schedule 24.12.2014

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 Text создает bbox. Вам нужно установить pad = 0. Тогда inline_spacing работает.

См. Вопрос!

person Li Ziming    schedule 28.11.2017