У меня есть примерно такие данные, представляющие чистый денежный поток на портфель и на какие даты:
import datetime
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.DataFrame({'PORTFOLIO': ['A', 'A', 'A', 'A','A', 'A', 'A', 'B','B', 'B','B', 'B', 'B', 'B','C'],
'DATE': ['28-02-2018','28-02-2018','28-02-2018','10-10-2018','10-10-2018','01-12-2018','31-12-2018',
'30-09-2018','30-09-2018','30-09-2018','31-12-2018','31-01-2019','28-02-2019','05-03-2019','01-07-2019'],
'NCF': [ 856000, 900000, 45000, 2005600,43900, 46700, 900000, 7890000, 821000, 95000, 400000, 7000000, 82500,10000000,1525000],
})
df2=df.groupby(['PORTFOLIO','DATE']).sum().reset_index()
df2
Я группирую его, так как меня интересует только просмотр денежных потоков по дням.
Теперь меня интересует визуализация денежного потока в виде гистограммы для портфеля.
sns.set(style='dark', color_codes=True)
g=sns.FacetGrid(df2, col="PORTFOLIO", hue='PORTFOLIO',col_wrap=3, height=5, sharey=False, sharex=False)
g=g.map(plt.bar,'DATE','NCF')
g.set_xticklabels(rotation=45)
plt.tight_layout()
plt.show()
К сожалению, мультиплоты сетки морского борова дают мне неправильные значения на оси x, независимо от того, что я пытаюсь сделать с набором данных. Это похоже на то, как первый портфель устанавливает значения тиков, а остальные просто должны следовать, даже если даты неверны.
Если я удалю
g.set_xticklabels(rotation=45)
Тогда портфель C получает правильную дату, и кажется, что правильные даты на B скрыты за неправильными датами «A».
Порядок корзин меняется, но все равно не корректно (монотонное увеличение по дате).
Что я делаю не так и как я могу это исправить?