#python-3.x #pandas #plot
#python-3.x #pandas #построить
Вопрос:
У меня есть фрейм данных pandas, похожий на:
df = pd.DataFrame([['1/1/2020',0.1,0.3,'cat1','csv'],
['1/1/2020',0.4,0.7,'cat1','excel'],
['1/1/2020',1.7,2.3,'cat2','csv'],
['2/1/2020',0,0.3,'cat2','csv'],
['2/1/2020',0.4,0.5,'cat2','csv'],
['2/1/2020',0.5,0.7,'cat1','csv'],
['2/1/2020',1.1,1.3,'cat1','excel']],
columns = ['date','start','end','cat','source'])
Каждая строка df содержит диапазон значений, которые должны быть окрашены, и цветовую группу (cat). Я хотел бы отобразить поля на ту же дату в той же строке на графике:
Приятно иметь: было бы еще лучше, если бы график был интерактивным таким образом, чтобы он мог отображать всплывающее окно, отображающее информацию о каждом цветовом поле (дополнительная информация, которая не может быть отображена по цвету / расположению графика), например:
Source: csv
Ответ №1:
Давайте попробуем построить один столбец за другим:
plt.figure(figsize=(10,3))
for i,r in df.iterrows():
plt.barh(r['date'], width=r['end']-r['start'],
left=r['start'], color='y' if r['cat']=='cat1' else 'g')
Или построить их все вместе с отображением цвета:
plt.barh(df['date'], width=df['end']-df['start'],
left=df['start'], color=df['cat'].map({'cat1':'y', 'cat2':'g'}))
Вывод:
Комментарии:
1. Большое спасибо! Он отлично работает с моими фактическими данными! Могу ли я узнать, есть ли какой-либо способ заставить всплывающее окно также отображать исходную информацию?