seaborn, как строить по столбцам, без учета отсутствующих данных - PullRequest
0 голосов
/ 10 октября 2019

У меня есть фрейм данных с ключами 'time_period', 'teamID', 'winrate'.

Я пытаюсь построить взаимосвязь между teamID и winrate, для каждого периода времени.

Я делаю это с:

g = sns.catplot(x="teamID", y="winrate", kind="bar", col='time_period', 
col_wrap=1, data=df, height=5, aspect=2.5)

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

Есть ли способ сделать так, чтобы на графике каждого периода отображались только те команды, которые применимы кэтот период?

Спасибо.

1 Ответ

1 голос
/ 10 октября 2019

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

df = pd.DataFrame({'teamID': [1,2,3,2,3,4], 'time_period': [2018,2018,2018,2019,2019,2019], 'winrate': [.8, .7, .9, .85, .8, .95]})
f, ax = plt.subplots(1, len(grp))
grp = df.groupby('time_period')
for i,g in enumerate(grp):
    sns.barplot(g[1].teamID.to_list(), g[1].winrate.to_list(), ax=ax[i])
    ax[i].title.set_text(g[0])

enter image description here

Обратите внимание, что одинаковые цвета соответствуют различным командам на разных участках, поэтому вы можете захотетьвключите, например, color=sns.color_palette()[0], чтобы установить все столбцы на один цвет.

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