Изменение прозрачности/удаление контурных линий в Matplotlib

Я использую контур для построения некоторых данных, но у меня проблемы с настройкой прозрачности. Я хочу иметь возможность установить прозрачность как заливки, так и линий, но, похоже, не могу этого сделать.

Упрощенная версия моего кода выглядит следующим образом:

array = np.random.rand(100,100)

#lonit and latit are latitude and longitude grids from an input dataset
LONG, LAT = np.meshgrid(lonit, latit)
longitude,latitude = m(LONG, LAT)

pp = m.contourf(longitude, latitude, imagelist[0], 50,
            cmap='YlOrRd', extend="min", alpha = .5) 

plt.show()

Это выводит: введите здесь описание изображения

и, как вы можете видеть, несмотря на то, что для альфа установлено значение 0,5, прозрачность контурных линий остается равной 1. Кто-нибудь знает, как изменить это, чтобы они были такими же прозрачными, как и заливка? В качестве альтернативы может работать полное удаление контурных линий, но мне нравится метод контура, поскольку он упрощает визуализацию (кроме вышеупомянутых линий!)

Моя цель состоит в том, чтобы отобразить базовую карту, чтобы линии усложняли мой график и, таким образом, я хочу удалить/сделать их невидимыми.

Заранее спасибо!

ОБНОВЛЕНИЕ: БОЛЬШЕ ГРАФИЧЕСКИХ ПРОБЛЕМ ДЛЯ ОТОБРАЖЕНИЯ

Альфа установлена ​​на 1.0: введите здесь описание изображения

Альфа установлена ​​на 0,1: введите здесь описание изображения

Для Alpha установлено значение 0,6, а для AntiAliased установлено значение True:

pp = m.contourf(longitude, latitude, imagelist[0], 50,
cmap='YlOrRd', extend="min", alpha = 0.6, antialiased = True) 

введите здесь описание изображения

Это улучшило линии, но все еще не избавило их от них.


person tda    schedule 23.11.2016    source источник
comment
Вы уверены, что параметр alpha не меняет прозрачность обоих?   -  person Chr    schedule 23.11.2016
comment
пробовал понизить альфу больше?   -  person Inconnu    schedule 23.11.2016
comment
Привет вам обоим, я обновил вопрос, добавив больше изображений, показывающих разницу альфа-уровней! - Альфа = 0 создает полностью невидимый график, что означает изменение его прозрачности. Возможно, мне нужно вообще удалить контурные линии, поэтому я добавлю эту опцию к исходному вопросу.   -  person tda    schedule 23.11.2016
comment
Возможный дубликат Matplotlib Contourf отображает нежелательные контуры, когда Alpha ‹ 1   -  person Bart    schedule 23.11.2016
comment
Спасибо @Bart, я попробовал сглаживание и добавил к своему ответу результаты, к сожалению, они все еще видны, хотя и в меньшей степени.   -  person tda    schedule 23.11.2016
comment
Раньше я боролся с подобными проблемами; иногда казалось, что проблема решается двойным вызовом contourf (я знаю, это некрасиво...).   -  person Bart    schedule 23.11.2016
comment
Это действительно уродливо, но, похоже, работает, спасибо! Раздражает, что нет аргумента для удаления линий, потому что с заливками... линии лишние и мешают....   -  person tda    schedule 23.11.2016


Ответы (1)


Линии, которые вы все еще видите при использовании antialiased = True, на самом деле являются не линиями, а фоном, который просвечивает, поскольку заполненные контуры не касаются друг друга.

Одно очень уродливое решение может состоять в том, чтобы построить одно и то же дважды, но с немного разными уровнями.

pp1 = m.contourf(longitude, latitude, imagelist[0], 50, cmap='YlOrRd', extend="min", alpha = 0.3, antialiased = True)
pp2 = m.contourf(longitude, latitude, imagelist[0], 55, cmap='YlOrRd', extend="min", alpha = 0.3, antialiased = True)

Обратите внимание, что вам также нужно разделить значение альфа пополам, чтобы получить ту же прозрачность. Вы по-прежнему будете видеть линии, но не такие сильные, как раньше.

person Sebastian    schedule 04.03.2017