Невозможно удалить осевые шипы при использовании картопроекции в matplotlib - PullRequest
1 голос
/ 03 октября 2019

Я использовал cartopy с matplotlib в python 2.7 для визуализации некоторых данных на картах. Но когда я пытаюсь удалить оси осей (верхнюю и правую) с помощью следующего фрагмента кода:

ax1.spines['top'].set_visible(False)
ax1.spines['right'].set_visible(False)  

Это не сработает. Установка толщины позвоночника также не работает:

 ax1.spines['left'].set_linewidth(3)
 ax1.spines['bottom'].set_linewidth(3)  

Приведенные выше строки кода не влияют на графики, когда я использую картопроекцию. Но если я использую обычные оси matplotlib, они работают нормально.
Я попробовал упомянутый метод rcParams здесь , но безрезультатно.
Я включаю урезанную версию моего кода ниже:

lons=np.arange(10, 50, .5)
lats=np.arange(7, 44, .5)

xticks=np.arange(math.ceil(lons.min()),
        math.floor(lons.max())+4, 4)
yticks=np.arange(math.ceil(lats.min()),
        math.floor(lats.max())+4, 4)

fig=plt.figure()    
ax1=fig.add_subplot(111,
        projection=ccrs.PlateCarree())

ax1.set_extent([lons[0], lons[-1],
        lats[0], lats[-1]],
        crs=ccrs.PlateCarree())
ax1.coastlines()

ax1.set_xticks(xticks)
ax1.set_yticks(yticks)

ax1.spines['top'].set_visible(False)
ax1.spines['right'].set_visible(False)

ax1.spines['left'].set_linewidth(3)
ax1.spines['bottom'].set_linewidth(3)  
plt.show()

Я использую miniconda для управления пакетами, и используются следующие версии соответствующих модулей:

Python - 2.7.16
matplotlib - 2.3.3
cartopy - 0.17.0

Итак, как я могу удалить эти шипы при использовании cartopyпрогнозы?

ОБНОВЛЕНИЕ

Я копаю глубже и нашел это:
frameon = False не удаляет фрейм карты
Невозможно изменить ширину границы картопных осей
, которые связаны с моей проблемой. Из информации в этих сообщениях я нашел способ решения своей проблемы:
Сначала необходимо отключить оси или позвоночники с помощью следующего кода.

ax1.outline_patch.set_visible(False)

Затем выможно использовать метод axis.spines [''] для включения отдельных шипов, как показано ниже.

ax1.spines['left'].set_visible(True)  
ax1.spines['bottom'].set_visible(True)  

и затем установить ширину линии позвоночника:

ax1.spines['left'].set_linewidth(3)  
ax1.spines['bottom'].set_linewidth(3)  

Вот результат:
Plot
Есть ли более правильный способ делать то, что я хочу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...