Seaborn барные этикетки с 3-й переменной - PullRequest
2 голосов
/ 20 февраля 2020

Я довольно новичок в Python визуализации. У меня есть данные с 3 переменными; месяц, частота и слово. Я пытаюсь увидеть, какое слово появилось больше всего за месяц.

import pandas as pd
import seaborn as sns

test = pd.DataFrame({'month': ['2019-01','2019-02','2019-03','2019-04','2019-05'],
             'freq':[3,5,22,6,3],
             'word':['hello','world','seaborn','seaborn','python']})


sns.barplot(x = 'month', y = 'freq', data = test)

Пока у меня есть месяц по оси x, freq по оси y. Но я хочу маркировать бары словами, которые появляются в те месяцы. Например, «привет» должен появиться в баре на январь-2019.

Test

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Используйте plt.annotate , чтобы разместить метки в нужных местах.

Ключевые слова ha и va обеспечивают правильное (горизонтальное / вертикальное) выравнивание.

test = pd.DataFrame({'month': ['2019-01','2019-02','2019-03','2019-04','2019-05'],
             'freq':[3,5,22,6,3],
             'word':['hello','world','seaborn','seaborn','python']})

for i in test.index:
    word = test.loc[i, "word"]
    y = test.loc[i, "freq"]
    plt.annotate(word, (i, y), ha="center", va="bottom")

sns.barplot(x = 'month', y = 'freq', data = test);

Barplot with labels

1 голос
/ 20 февраля 2020

Если я вас правильно понял, вы можете сделать так:

import pandas as pd
import seaborn as sns

test = pd.DataFrame({'month': ['2019-01','2019-02','2019-03','2019-04','2019-05'],
         'freq':[3,5,22,6,3],
         'word':['hello','world','seaborn','exp','python']})

ax = sns.barplot(x = 'month', y = 'freq', data = test)

for bar, label in zip(ax.patches, test['word']):
    x = bar.get_x()
    width = bar.get_width()
    height = bar.get_height()
    ax.text(x+width/2., height + 0.2, label, ha="center") 

enter image description here

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