2016-11-21 129 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

相關問題