2016-11-21 1 views
1

Я пытаюсь построить очень похожую ситуацию с той, которая описана в документации Сиборн на http://seaborn.pydata.org/tutorial/axis_grids.html#plotting-pairwise-relationships-with-pairgrid-and-pairplotЗаговор нескольких наборов данных на seaborn.PairGrid в kdeplots с различными цветами

В примере на вопрос можно найти несколько диаграммы вниз, построение 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) 

Это будет цикл по списку цветных карт, хранящихся в атрибуте cmap_cycle, прикрепленного к make_kde функция.

Результат выглядит следующим образом для набора данных-х Айрис: Example image

+0

Спасибо за помощь, это делает то, что мне нужно это. Я все еще думаю, что было бы хорошо, если бы это было построено непосредственно на морском побережье. Очень признателен! –

+0

Эй, еще одна вещь, есть ли способ получить доступ к осям и фигам объектов сюжета PairGrid и извлечь их, чтобы больше работать над ними? –

+1

@LimokPalantaemon Вы можете взглянуть на этот ответ: http://stackoverflow.com/a/23973562/3820658 – jb326

Смежные вопросы