seaborn.pairplot () изменяя цвет каждого графика - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь создать простой pairplot для каждого графика с отдельным цветом. Я не знаю, возможно ли это, поскольку я не использую hue.

Мой набор данных таков:

      High Jump  Discus Throw  Long Jump
0           859           732       1061
1           749           823        975
2           887           778        866
3           878           790        898
4           803           789        913
     ...           ...        ...
7963        714           571        760
7964        767           573        845
7965        840           461        804
7966        758           487        720
7967        714           527        809

Мой код и график выглядят так:

t = sns.pairplot(new)

enter image description here

Есть ли способ сделать это более красочным?

Ответы [ 2 ]

5 голосов
/ 08 января 2020

Поскольку PairGrid автоматически передает атрибут цвета в функцию построения графика, один из способов получить другой цвет для каждого графика - создать собственную функцию построения графика, которая игнорирует цвет, переданный PairGrid (обратите внимание, что вы теряете возможность цветовой код hues очевидно)

colors = iter(['xkcd:red purple', 'xkcd:pale teal', 'xkcd:warm purple',
       'xkcd:light forest green', 'xkcd:blue with a hint of purple',
       'xkcd:light peach', 'xkcd:dusky purple', 'xkcd:pale mauve',
       'xkcd:bright sky blue', 'xkcd:baby poop green', 'xkcd:brownish',
       'xkcd:moss green', 'xkcd:deep blue', 'xkcd:melon',
       'xkcd:faded green', 'xkcd:cyan', 'xkcd:brown green',
       'xkcd:purple blue', 'xkcd:baby shit green', 'xkcd:greyish blue'])

def my_scatter(x,y, **kwargs):
    kwargs['color'] = next(colors)
    plt.scatter(x,y, **kwargs)

def my_hist(x, **kwargs):
    kwargs['color'] = next(colors)
    plt.hist(x, **kwargs)

iris = sns.load_dataset("iris")
g = sns.PairGrid(iris)
g.map_diag(my_hist)
g.map_offdiag(my_scatter)

enter image description here

1 голос
/ 07 января 2020

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

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

df = pd.read_csv('dataset.csv')

g = sns.PairGrid(df)
g.map_upper(sns.scatterplot,color='red')
g.map_lower(sns.scatterplot, color='green')
g.map_diag(plt.hist)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...