簡體   English   中英

Seaborn Facetgrid x軸錯誤

[英]Seaborn Facetgrid incorrect x axis

我有類似這樣的數據,顯示每個投資組合的凈現金流量以及在什么日期:

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'日期之后。 在此處輸入圖片說明

垃圾桶的順序發生了變化,但仍然不正確(單調隨着日期增加)。

我做錯了什么,該如何解決?

首先轉換為datetime並排序:

df2.DATE = pd.to_datetime(df2.DATE)
df2 = df2.sort_values(by=['PORTFOLIO', 'DATE'])
df2.DATE = df2.DATE.astype(str)

您可以使用g.axes訪問單個軸(基於此答案 )。 所以:

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)
for idx, v in enumerate(df2.PORTFOLIO.unique()):
    g.axes[idx].set_xticklabels(df2.loc[df2.PORTFOLIO == v, 'DATE'])
plt.tight_layout()
plt.show()

給你:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM