Наложение графика рассеяния с плотностью (двумерной) с использованием Seaborn - PullRequest
0 голосов
/ 02 декабря 2018

Как гласит заголовок, я пытаюсь наложить график рассеяния с двумерной плотностью, используя Seaborn.Я очень новичок с этим пакетом, так что возможно ответ очевиден.Вот мой текущий код.(Взято из https://elitedatascience.com/python-seaborn-tutorial#)

# Density overlayed with Scatter
#Set figure size
plt.figure(figsize=(10,6))

# Plots
sns.kdeplot(df.Attack,
            df.Defense)

sns.lmplot(x='Attack',
          y='Defense',
          hue='Stage',
          data=df,
          fit_reg=False)

plt.title('Density vs Scatter')

Моя проблема заключается в том, что они отображаются в виде двух отдельных графиков. Из этого руководства следует, что это наложение должно быть простым.

edit: вот мой результат

Плотность

Разброс

1 Ответ

0 голосов
/ 02 декабря 2018

Если вы прочитаете документ от Seaborn, вы увидите, что sns.lmplot() объединяет regplot() и FacetGrid, а sns.kdeplot() возвращает объект Axes.Таким образом, вместо этого вы можете использовать функцию уровня фигуры sns.regplot(), чтобы оба графика можно было разместить на одной фигуре.Код можно изменить следующим образом.

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

df = pd.read_csv('Pokemon.csv', encoding='ISO-8859-1')

# plot
plt.figure(figsize=(10,6))
sns.relplot(x='Attack', y='Defense', hue='Stage', data=df)
sns.kdeplot(df.Attack, df.Defense)
plt.title('Density vs Scatter');

Если вы используете Jupyter в качестве IDE, обязательно поместите весь код под # plot в той же ячейке.Для других IDE выберите и запустите код вместе.В противном случае они будут показаны как два отдельных участка.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...