Есть ли способ применить оттенок ТОЛЬКО к нижней части PairGrid в Seaborn? - PullRequest
0 голосов
/ 06 февраля 2019

Мне было интересно, можно ли нанести оттенок только на нижнюю часть морского рога PairGrid.

Например, скажем, у меня есть следующий рисунок: enter image description here

Для того, что мне нужно представить, я бы хотел сохранить графики плотности на диагонали, общие диаграммы рассеяния на верхних (с напечатанными над ними коэффициентами корреляции, которые я знаю, как сделать), но наНиже я хочу разделить точки на оттенки, чтобы показать своей аудитории, что произойдет, если мы сделаем подмножество данных.

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

Кто-нибудь знает, возможна ли моя проблема?

Текущий код, который я использую,

ff = sns.PairGrid(test2,vars=['OzekePower','Power0','Power1','Power2'],palette="husl") ff.map_upper(sns.scatterplot) ff.map_lower(sns.scatterplot) ff.map_diag(sns.kdeplot)

Так что я надеюсь на что-то вроде ff.map_lower(sns.scatterplot,hue='species'), но это приводит к ошибке.

РЕДАКТИРОВАТЬ - я могу сделать это, если я оставлюDiag и верхний пробел и назначить на еmpty строит графики индивидуально, но это кажется намного более продолжительным.

1 Ответ

0 голосов
/ 06 февраля 2019

К сожалению, PairGrid не имеет метода map_dataframe, который в противном случае мог бы использоваться для включения дополнительных столбцов кадра данных в отображение.Единственный способ получить hue только в нижней части PairGrid - это оставить аргумент hue в создании PairGrid и заполнить сетку там, где не требуется никакого оттенка.
Затем вручнуюустановите необходимые параметры для hue вручную в сетке и, наконец, вызовите map_lower, который затем увидит сетку, как если бы она указала hue с самого начала.

import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset("iris", cache=True)

g = sns.PairGrid(df)

g.map_upper(sns.scatterplot)

g.map_diag(sns.kdeplot)

# Now set parameters needed for `hue`
g.hue_vals = df["species"]
g.hue_names = df["species"].unique()
g.palette = sns.color_palette("husl", len(g.hue_names))
# Then map lower
g.map_lower(sns.scatterplot)

plt.show()

enter image description here

...