2016-11-21 209 views
1

我想在 http://seaborn.pydata.org/tutorial/axis_grids.html#plotting-pairwise-relationships-with-pairgrid-and-pairplot在seaborn.PairGrid绘制多个数据集与不同的颜色kdeplots

有问题的例子来绘制一个非常类似的情况在seaborn文档中描述的一个,可以发现几个向下绘图,用虹膜数据集绘制sns.PairGrid。他们绘制样本对网格上的不同物种,并将物种颜色编码为色调。

我想做的基本上是,但是用kde等高线图。我有同类型格式的数据作为其中:

new_HP.head() 
      A   C  logsw Mass Range 
0 -3.365547 0.977325 6.172032   0 
1 -0.836703 0.962374 5.949639   0 
2 -0.522476 0.931787 5.967940   0 
3 -0.508345 0.974561 5.929046   0 
4 -0.753747 0.905854 6.027479   0 

以“质量范围”取值0,1,2,3。随着

g = sns.PairGrid(new_HP, vars=['A', 'C', 'logsw'], hue="Mass Range") 
g.map_diag(sns.kdeplot) 
g.map_lower(sns.kdeplot) 
g.map_upper(plt.scatter) 

我得到以下情节The kde contours are all the same colour and ugly. 我想设置了kde countours的颜色为每个“质量范围”垃圾桶,就像在散射点的颜色显示为右上色调。我怎样才能做到这一点?

回答

1

如果你不介意的Python功能属性温和的滥用,你可以尝试这样的事:

import seaborn as sns 
import matplotlib.pyplot as plt 
import pandas as pd 
import numpy as np 
from itertools import cycle 

data = sns.load_dataset('iris') 

def make_kde(*args, **kwargs):  
    sns.kdeplot(*args, cmap=next(make_kde.cmap_cycle), **kwargs) 

make_kde.cmap_cycle = cycle(('Blues_r', 'Greens_r', 'Reds_r')) 

pg = sns.PairGrid(data, vars=('sepal_length', 'sepal_width', 'petal_length'), hue='species') 
pg.map_diag(sns.kdeplot) 
pg.map_lower(make_kde) 
pg.map_upper(plt.scatter) 

通过存储在连接到make_kdecmap_cycle属性颜色的地图列表这将循环功能。

结果看起来像这样的“光圈”数据集: Example image

+0

感谢您的帮助,这个做什么,我需要它。我仍然认为,如果这种东西直接建在海豹身上,那将会很好。非常感激! –

+0

嘿,还有一件事,是否有任何方法访问PairGrid情节的轴和无花果对象,并将它们提取出来以对它们做更多的工作? –

+1

@LimokPalantaemon你可以看看这个答案:http://stackoverflow.com/a/23973562/3820658 – jb326

相关问题