Нет выходных данных для дистплота seaborn

#python-3.x #pandas #seaborn

Вопрос:

Я пытался построить сюжет о морском борне.

пример кода:

 import pandas as pd
import seaborn as sns
import numpy as np
import scipy
import matplotlib.pyplot as plt

# data
np.random.seed(365)
x1 = np.random.normal(10, 3.4, size=1000)  # mean of 10
df = pd.DataFrame({'x1': x1})

def map_pdf(x, **kwargs):
    mu, std = scipy.stats.norm.fit(x)
    x0, x1 = p1.axes[0][0].get_xlim()  # axes for p1 is required to determine x_pdf
    x_pdf = np.linspace(x0, x1, 100)
    y_pdf = scipy.stats.norm.pdf(x_pdf, mu, std)
    plt.plot(x_pdf, y_pdf, c='r')


p1 = sns.displot(data=df, x='x1', kind='hist', bins=40, stat='density')
p1.map(map_pdf, 'x1')
 

не уверен, почему я не получаю никаких выходных данных после выполнения приведенного выше кода!

При выполнении вышеуказанного кода я получаю следующее,

 <seaborn.axisgrid.FacetGrid at 0x7f6a6fa0f820>
 

Любая помощь в этом будет высоко оценена.

Заранее благодарю вас за поддержку!

Комментарии:

1. Этот код отлично работает с seaborn 0.11.2 и matplotlib 3.4.3 . См. Код и график

2. Если вы используете ноутбук Jupyter, добавьте %matplotlib inline его в свой импорт и повторите попытку

3. Ура, я могу указать кому-нибудь на новую страницу часто задаваемых вопросов 🙂

Ответ №1:

Используйте plt.show для отображения вашего графика. То же самое было воссоздано и представлено ниже с решением.

 import pandas as pd
import seaborn as sns
import numpy as np
import scipy
import matplotlib.pyplot as plt

# data
np.random.seed(365)
x1 = np.random.normal(10, 3.4, size=1000)  # mean of 10
df = pd.DataFrame({'x1': x1})

def map_pdf(x, **kwargs):
    mu, std = scipy.stats.norm.fit(x)
    x0, x1 = p1.axes[0][0].get_xlim()  # axes for p1 is required to determine x_pdf
    x_pdf = np.linspace(x0, x1, 100)
    y_pdf = scipy.stats.norm.pdf(x_pdf, mu, std)
    plt.plot(x_pdf, y_pdf, c='r')


p1 = sns.displot(data=df, x='x1', kind='hist', bins=40, stat='density')
p1.map(map_pdf, 'x1')
plt.show(p1)
 

Комментарии:

1. @adey27, смогли ли вы решить свою проблему с помощью вышеуказанного решения?

2. Спасибо.. Это сработало после добавления «%matplotlib встроенный»