Как отобразить значения max и min, соответствующие значениям каждой оси x в диаграмме рассеяния в Matplotlib - PullRequest
2 голосов
/ 29 сентября 2019

Я получаю scatterplot следующим образом:

x['hour_min'] = x['hour'].astype(str) + '_' + x['minute'].astype(str)
plt.subplots(figsize=(48, 8))
sns.scatterplot(x.hour_min, x.label)
plt.title('{}th label'.format(i+1))
plt.xlabel('hour_min')
plt.ylabel('label')

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

enter image description here

Он должен показывать каждые максимальные и минимальные значения, соответствующие каждому значению на оси х, как красная часть.
Но я не знаю, как это сделать.
Если бы не ум, мог быкто-нибудь может мне помочь?
Спасибо заранее.

1 Ответ

2 голосов
/ 29 сентября 2019

Вы можете аннотировать значения следующим образом:

vals = x.groupby('hour_min', as_index=False).agg({'label':[min,max]})
vals.columns = ['_'.join(x) for x in vals.columns.values.reshape(-1)]

# should equal 'label_min' and 'label_max'
for time, label_min, label_max in vals.values:
    plt.annotate(label_min, (time, label_min), xytext=(0, -0.5), color='red')
    plt.annotate(label_max, (time, label_max), xytext=(0, 0.5), color='red')

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