LINUX.ORG.RU

два timeseris на одном рисунке

 ,


0

1

Имеется датафрейм

index = pd.DatetimeIndex([
    np.datetime64('2021-01-01 00:01:02.000001'), 
    np.datetime64('2021-01-03 00:01:02.000001'), 
    np.datetime64('2021-01-05 00:01:02.000001'), 
    np.datetime64('2021-01-07 00:01:02.000001'), 
], dtype='datetime64[ns]', name='time', freq=None)

df = pd.DataFrame(
    {'val': np.arange(1, 5)},
    index = index)

нужно отобразить его на графике и подсветить, например, первые 2 значения другим цветом. Пробую прорисовать два датафрейма

ax = df.val.plot(kind='bar', color='blue')
df.val.iloc[:2].plot(kind='bar', color='red', ax=ax)
plt.show()
При этом часть первого датафрейма теряется. Как можно сделать, чтобы оба датафрейма отображались?

P.S. если более длинный датафрейм поставить последним, то увидим оба датафрейма, но это очень не красиво:

ax = df.val.iloc[:2].plot(kind='bar', color='red', width=0.2)
df.val.plot(kind='bar', color='blue', ax = ax, width=0.1)



Последнее исправление: scientistpython (всего исправлений: 1)

Ты берешь «слайс» из двух последних элементов датафрейма для построения графика. Потому первые две части и пропадают.

В твоем конкретном случае можно по простому:

cls = ['red', 'orange', 'blue', 'blue']
ax = df.val.plot(kind='bar', color=cls)
plt.show()

А для большей выборки или другого рода условий можно сделать кондишен заполнения списка цветов самому.

Yorween
()
Последнее исправление: Yorween (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.