Морские участки не появляются
Я уверен, что забываю что-то очень простое, но я не могу получить определенные сюжеты для работы с 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 для визуализации.
