Seaborn парные с непрерывными оттенками? - PullRequest
6 голосов
/ 22 апреля 2020

Как я могу внести непрерывный оттенок в мои парные участки морской волны?

Я передаю pandas фрейм данных train_df, чтобы визуализировать взаимосвязь между несколькими функциями.

Однако я также хотел бы добавить оттенок, который бы использовал соответствующие им целевые значения, target_df. Эти целевые значения находятся в непрерывном масштабе (~ плавает между 10 и 100).

Я определил sns.color_palette("RdGr"), который хотел бы использовать.

Прямо сейчас у меня есть следующая пара (без оттенка):

sns.pairplot(train_df)

Как я могу передать target_df как оттенок, используя цветовую палитру, определенную выше?

Большое спасибо заранее.

Ответы [ 3 ]

3 голосов
/ 27 апреля 2020

IIU C, вы можете просто присвоить target_df в качестве столбца в train_df и передать его как hue:

sns.pairplot(data=train_df.assign(target=target_df, 
                                  hue='target')

Однако это будет очень медленно, если ваш target непрерывно. Вместо этого вы можете сделать двойной for l oop:

num_features = len(train_df.columns)
fig,ax = plt.subplots(num_features, num_features, figsize=(10,10))
for i in train_df.columns:
    for j in train_df.columns:
        if i==j:    # diagonal
            sns.distplot(train_df[0], kde=False, ax=ax[i][j])
        else:       # off diagonal
            sns.scatterplot(x=train_df[i],y=train_df[j], 
                            ax=ax[i][j], hue=target_df, palette='BrBG',
                            legend=False)

, который дает вам что-то вроде этого:

enter image description here

1 голос
/ 01 мая 2020

Это может быть проще, чем сейчас, но нет необходимости воссоздавать PairGrid самостоятельно.

diamonds = sns.load_dataset("diamonds")
g = sns.PairGrid(diamonds, vars=["carat", "depth", "table"])
g.map_diag(sns.kdeplot, color=".2")
g.map_offdiag(sns.scatterplot, hue=diamonds["price"], s=5, linewidth=0)
g.axes[1, -1].legend(loc="center left", bbox_to_anchor=(.7, .5))

enter image description here

0 голосов
/ 22 апреля 2020

В документации (https://seaborn.pydata.org/generated/seaborn.pairplot.html) вы можете видеть, что вам просто нужно установить palette = my_palette при вызове функции следующим образом:

sns.pairplot(train_df, palette = my_palette)

...