Я уверен, что забыл что-то очень простое, но я не могу заставить некоторые сюжеты работать с Сиборном.
Если я сделаю:
import seaborn as sns
Затем любые графики, которые я создаю как обычно с помощью matplotlib, получают стиль Seaborn (с серой сеткой на заднем плане).
Однако, если я попытаюсь сделать один из примеров, таких как:
In [1]: import seaborn as sns
In [2]: sns.set()
In [3]: df = sns.load_dataset('iris')
In [4]: sns.pairplot(df, hue='species', size=2.5)
Out[4]: <seaborn.axisgrid.PairGrid at 0x3e59150>
Функция pairplot возвращает объект PairGrid, но график не отображается.
Я немного сбит с толку, потому что matplotlib, кажется, функционирует должным образом, а стили Seaborn применяются к другим графикам matplotlib, но функции Seaborn, похоже, ничего не делают. Кто-нибудь знает, в чем может быть проблема?
python
matplotlib
seaborn
robc89
источник
источник
%matplotlib inline
чтобы указать встроенный бэкэнд. В противном случае вы можете вызватьsns.plt.show()
рендеринг сюжета в отдельное окно.Ответы:
Сюжеты, созданные с использованием seaborn, должны отображаться как обычные сюжеты matplotlib. Это можно сделать с помощью
функция из matplotlib.
Первоначально я опубликовал решение использовать уже импортированный объект matplotlib из seaborn (
sns.plt.show()
), однако это считается плохой практикой. Поэтому просто импортируйте модуль matplotlib.pyplot напрямую и покажите свои графики сЕсли используется записная книжка IPython, встроенный бэкэнд может быть вызван, чтобы устранить необходимость вызова show после каждого графика. Соответствующая магия
источник
%matplotlib qt
,%matplotlib gtk
, и%matplotlib tk
т.д. см%matplotlib?
для получения дополнительной информации%matplotlib inline
в некоторый файл конфигурации, чтобы он всегда применялся? Или мне всегда нужно добавлять его в каждую новую книгу?Я регулярно отвечаю на этот вопрос, и мне всегда нужно время, чтобы найти то, что я ищу:
Обратите внимание: в Python 2 вы также можете использовать
sns.plt.show()
, но не в Python 3.Полный пример
дает
источник
AttributeError: module 'seaborn' has no attribute 'plt'
sns.plt
Чтобы избежать путаницы (как, кажется, некоторые в комментариях). Предполагая, что вы находитесь на Jupyter:
%matplotlib inline
> отображает графики внутри ноутбукаsns.plt.show()
> отображает графики вне тетради%matplotlib inline
будет ПЕРЕОПРЕДЕЛЕНИЕsns.plt.show()
в том смысле , что участки будут показаны В записной книжке, даже еслиsns.plt.show()
называется.И да, в вашу конфигурацию легко включить строку:
Автоматически запускать% matplotlib inline в IPython Notebook
Но кажется, что лучше хранить его вместе с импортом в реальном коде.
источник
Это сработало для меня
источник
Мой совет просто дать
plt.figure()
и дать немного сюжета sns. Напримерsns.distplot(data)
,Хотя он будет выглядеть, он не показывает никакого сюжета, но при увеличении фигуры вы сможете увидеть график.
источник
plt.figure()
) перед созданием линейного сюжета и не понял, почему сюжет не появился. Отлично, спасибо!Если вы печатаете в консоли IPython (где вы не можете использовать
%matplotlib inline
) вместо записной книжки Jupyter и не хотите запускатьplt.show()
повторно, вы можете запустить консоль IPython с помощьюipython --pylab
:источник
Судя по стилю вашего фрагмента кода, я полагаю, вы использовали IPython, а не Jupyter Notebook.
В этом выпуске GitHub в 2016 году один из участников IPython дал понять, что отображение диаграмм будет работать только тогда, когда «работает только тогда, когда это ядро Jupyter». Таким образом,
%matplotlib inline
не будет работать.У меня просто возникла та же проблема, и я предлагаю вам использовать Jupyter Notebook для визуализации.
источник