Чтобы снять рамку на рисунке, я пишу
frameon=False
отлично работает pyplot.figure
, но при matplotlib.Figure
этом удаляет только серый фон, рамка остается. Кроме того, я хочу, чтобы показывались только линии, а все остальное на рисунке было прозрачным.
с pyplot я могу делать то, что хочу, я хочу сделать это с matplotlib по какой-то долгой причине, которую я не хочу упоминать, чтобы расширить мой вопрос.
python
matplotlib
Эммет Б
источник
источник
savefig
? (Если это так, он переопределяет все, что вы установили при сохранении рисунка.) Работает ли ручная настройкаfig.patch.set_visible(False)
?Ответы:
Прежде всего, если вы используете
savefig
, имейте в виду, что при сохранении он переопределит цвет фона фигуры, если не указано иное (напримерfig.savefig('blah.png', transparent=True)
).Однако, чтобы убрать фон осей и фигуры на экране, вам нужно установить оба параметра
ax.patch
иfig.patch
быть невидимым.Например
(Конечно, вы не можете сказать разницу на белом фоне SO, но все прозрачно ...)
Если вы не хотите показывать ничего, кроме линии, отключите ось, также используя
ax.axis('off')
:В этом случае, тем не менее, вы можете заставить оси принимать полную фигуру. Если вы вручную указываете расположение осей, вы можете указать, чтобы оно заняло полную цифру (альтернативно, вы можете использовать
subplots_adjust
, но это проще для случая одиночных осей).источник
ax.axis('off')
(вам все еще нужно выключить рамку фигуры).ax.set_yticklabels(('G1', 'G2', 'G3'))
print_png()
БросаетTypeError: write() argument must be str, not bytes
исключение для меня на Python 3. Открытие файла в записи двоичного файла ('wb'
) необходим для его работы.ax.axis('off')
, как указал Джо Кингтон, удалит все, кроме намеченной линии.Для тех, кто хочет удалить только рамку (рамку) и сохранить метки, тикеры и т. Д., Это можно сделать, обратившись к
spines
объекту на оси. Учитывая объект осиax
, следующее должно удалить границы со всех четырех сторон:И, в случае снятия
x
иy
галочки с участка:источник
ax.yaxis.set_ticks_position('left') ax.xaxis.set_ticks_position('bottom')
Самый простой способ избавиться от уродливого фрейма в новых версиях matplotlib:
Если вы действительно должны всегда использовать объектно - ориентированный подход, то сделать:
ax.set_frame_on(False)
.источник
ax.set_frame_on(False)
, который делает то же самое. Может быть, включить в ответ выше.Основываясь на превосходном ответе @ peeol , вы также можете удалить кадр, выполнив
Чтобы привести пример (весь пример кода можно найти в конце этого поста), скажем, у вас есть гистограмма, как это,
вы можете удалить кадр с командами выше , а затем либо сохранить
x-
иytick
этикетки (график не показан) или удалить их , а также делатьВ этом случае можно сразу обозначить столбцы; окончательный график может выглядеть так (код приведен ниже):
Вот весь код, необходимый для создания графиков:
источник
Как я уже ответил здесь , вы можете удалить шипы со всех ваших графиков через настройки стиля (таблица стилей или rcParams):
источник
проблема
У меня была похожая проблема с использованием осей. Параметр класса есть,
frameon
но kwarg естьframe_on
. axes_api>>> plt.gca().set(frameon=False)
AttributeError: Unknown property frameon
Решение
frame_on
пример
источник
Я использую для этого:
источник
Убрать рамку графика
Я надеюсь, что это может сработать
источник
источник
должен сделать свое дело.
источник
У plt.savefig есть эти опции, просто нужно отключить оси перед
источник