Морские участки не появляются
Я уверен, что забываю что-то очень простое, но я не могу получить определенные сюжеты для работы с Seaborn.
Если я это сделаю:
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, похоже, ничего не делают. Кто-нибудь знает, в чем может быть проблема?
5 ответов:
участки, созданные с использованием seaborn, должны отображаться как обычные участки matplotlib. Это можно сделать с помощью
plt.show()
функция от matplotlib.
Первоначально я опубликовал решение для использования уже импортированного объекта matplotlib из seaborn (
sns.plt.show()
) однако это считается плохой практикой. Поэтому просто напрямую импортируйте matplotlib.pyplot модуль и показать свои участки сimport matplotlib.pyplot as plt plt.show()
если ноутбук IPython используемый встроенный бэкэнд может быть вызван, чтобы удалить необходимость вызова show после каждого участка. Соответствующая магия -
%matplotlib inline
Я прихожу к этому вопросу довольно регулярно, и мне всегда требуется некоторое время, чтобы найти то, что я ищу:
import seaborn as sns import matplotlib.pyplot as plt plt.show() # <--- This is what you are looking for
обратите внимание: в Python 2, вы также можете использовать
sns.plt.show()
, но не в Python 3.Пример
#!/usr/bin/env python # -*- coding: utf-8 -*- """Visualize C_0.99 for all languages except the 10 with most characters.""" import seaborn as sns import matplotlib.pyplot as plt l = [41, 44, 46, 46, 47, 47, 48, 48, 49, 51, 52, 53, 53, 53, 53, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, 68, 68, 68, 68, 68, 69, 69, 69, 70, 70, 70, 70, 71, 71, 71, 71, 71, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, 74, 75, 75, 75, 76, 77, 77, 78, 78, 79, 79, 79, 79, 80, 80, 80, 80, 81, 81, 81, 81, 83, 84, 84, 85, 86, 86, 86, 86, 87, 87, 87, 87, 87, 88, 90, 90, 90, 90, 90, 90, 91, 91, 91, 91, 91, 91, 91, 91, 92, 92, 93, 93, 93, 94, 95, 95, 96, 98, 98, 99, 100, 102, 104, 105, 107, 108, 109, 110, 110, 113, 113, 115, 116, 118, 119, 121] sns.distplot(l, kde=True, rug=False) plt.show()
дает
чтобы избежать путаницы (как кажется, некоторые в комментариях). Предполагая, что вы находитесь на Jupyter:
%matplotlib inline
> отображает участки внутри ноутбук
sns.plt.show()
> отображает участки за пределами ноутбука
%matplotlib inline
будет переопределитьsns.plt.show()
в том смысле, что сюжеты будут показаны на ноутбук даже приsns.plt.show()
называется.и да, легко включить линию в вашей конфигурации:
автоматически запустить %matplotlib inline в IPython Notebook
но это кажется лучшим соглашением, чтобы сохранить его вместе с импортом в фактическом коде.
мой совет просто дать
plt.figure()
и дать некоторые sns сюжет. Например
sns.distplot(data)
.хотя это будет выглядеть он не показывает никакого сюжета, когда вы максимизируете фигуру, вы сможете увидеть сюжет.
чтобы сказать из стиля вашего фрагмента кода, я полагаю, что вы использовали IPython, а не Jupyter Notebook.
в этой вопрос на GitHub член IPython в 2016 году дал понять, что отображение диаграмм будет работать только тогда, когда "работает только тогда, когда это ядро Jupyter". Таким образом,
%matplotlib inline
не будет работать.Я просто имел ту же проблему и предлагаю вам использовать Jupyter Notebook для визуализации.