【发布时间】:2019-08-02 23:34:53
【问题描述】:
我有类似这样的数据,显示每个投资组合的净现金流,以及日期:
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()
不幸的是,seaborn facetgrid multiplots 在 x 轴上给出了不正确的值,无论我尝试对数据集做什么。就像第一个投资组合设置了刻度值,即使日期不正确,其余的也必须遵循。
如果我删除
g.set_xticklabels(rotation=45) 然后投资组合 C 得到正确的日期,看起来 B 上的正确日期隐藏在不正确的“A”日期后面。
垃圾箱的顺序发生了变化,但仍然不正确(按日期单调递增)。
我做错了什么,我该如何解决?
【问题讨论】:
-
能否请您详细说明想要的结果是什么?
-
@Julia,我想在橙色和绿色条形图中的条形下方看到正确的日期。例如,投资组合“C”在 7 月 1 日只有一个现金流,而不是在条形图中显示的 12 月 1 日。
标签: python pandas dataframe matplotlib facet-grid