Как исправить цвета легенды с помощью x_bins в seborn regplot? - PullRequest
0 голосов
/ 09 апреля 2019

Регплот Seaborn прекращает сопоставление цвета легенды с цветом линии, когда я включаю x_bins в параметры. Он работает нормально, пока я не добавлю x_bins, и тогда разноцветная легенда не потеряет свою цветовую дифференциацию.

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)
import pandas as pd
import seaborn as sns

data=pd.DataFrame({"VarX" : np.arange(10), 
                   'VarY1': np.random.rand(10),
                   'VarY2': np.random.rand(10),
                   'VarY3': np.random.rand(10)})

fig = plt.figure(figsize=(10,6))
sns.regplot(x='VarX', y='VarY1', data=data, x_bins=10)
sns.regplot(x='VarX', y='VarY2', data=data, x_bins=10)
sns.regplot(x='VarX', y='VarY3', data=data, x_bins=10)
fig.legend(labels=['First','Second','Third'])
plt.show()

enter image description here

1 Ответ

1 голос
/ 09 апреля 2019

Seaborn имеет свою собственную концепцию легенды, которая часто противоречит легендам matplotlib по умолчанию.

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

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)
import pandas as pd


data=pd.DataFrame({"VarX" : np.arange(10), 
                   'VarY1': np.random.rand(10),
                   'VarY2': np.random.rand(10),
                   'VarY3': np.random.rand(10)})

df = data.set_index("VarX")
df.columns = ['First','Second','Third']
df = df.stack().rename_axis(['VarX','Ycategory']).rename('VarY').reset_index()


sns.lmplot(x="VarX", y="VarY", hue="Ycategory", data = df, x_bins=10)

plt.show()

enter image description here

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