seaborn.pairplot()更改每个图形的颜色

2024-06-12 14:23:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用一个单独的颜色生成一个简单的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

有没有办法让这个更多彩


Tags: 数据代码new颜色图表huelongthrow
2条回答

由于您没有任何像性别这样的分类数据,所以可以使用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)

由于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

相关问题 更多 >