Настройка заголовков в Seaborn FacetGrid на основе фасета - PullRequest
0 голосов
/ 01 мая 2020

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

Мои данные похожи это:

import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt from datetime import datetime import matplotlib.dates as mdates import random

datelist = pd.date_range(start="march 1 2020", end="may 20 2020", freq="w").tolist()
varlist = ["x", "y", "z", "x", "y", "z", "x", "y", "z", "x", "y", "z"]
deptlist = ["a", "a", "b", "a", "a", "b", "a", "a", "b", "a", "a", "b"]
vallist =  random.sample(range(10, 30), 12)
df = pd.DataFrame({'date': datelist, 'value': vallist, 'variable': varlist, 'department': deptlist})

Я хочу создать Сетка Моря Саборна следующим образом:

g = sns.FacetGrid(df, row="department", col="variable", sharey='row')

Я бы хотел изменить метки оси Y, чтобы они содержали название отдела, поэтому " Отдел А "эт c. Но на основании данных, которые я использую, отдельные отделы могут отличаться. Поэтому я хотел бы параметризовать настройку метки оси Y с помощью чего-то, что я извлекаю из g, что говорит мне конкретную переменную, которая была сопоставлена ​​с определенной строкой. Я копался, и хотя я уверен, что оно существует, я не могу его найти.

1 Ответ

1 голос
/ 03 мая 2020

Вы можете использовать set_ylabel() или set_xlabel для изменения меток с указанным c фасетом. Таким образом, в приведенном вами примере фасет department = a | variable = x будет равен [0,0], а следующая метка - [1,0].

Таким образом, мы можем попробовать это, используя ввод row_order, чтобы убедиться, что мы иметь их в том же порядке:

rowOrder = ['a','b']
g = sns.FacetGrid(df, row="department", col="variable", sharey='row',row_order=rowOrder)
g = g.map(plt.scatter, "value", "value")
for i in range(len(rowOrder)):
    g.axes[i,0].set_ylabel(rowOrder[i])

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...