【问题标题】:How to plot multiple columns in more than one graph如何在多个图表中绘制多列
【发布时间】:2019-03-13 17:48:55
【问题描述】:

我有一个看起来像这样的数据框 (df):

import pandas as pd

df = pd.DataFrame({'PORTFOLIO': 'A A A A B B B B'.split(),
                   'DATE': '01.01.2018 01.04.2018 01.07.2018 01.10.2018 01.01.2018 01.04.2018 01.07.2018 01.10.2018'.split(),
                   'TWR': '0.902394258 0.070277784 0.550490473 0.46175313 0.238824009 0.39631305 0.174549818 0.39739729'.split(),
                   'IRR': '0.109757902 0.234597079 0.049599131 0.936973087 0.455933496 0.60647549 0.154498108 0.887030381'.split()})

df['TWR'] = df['TWR'].astype('float')
df['IRR'] = df['IRR'].astype('float')

在我的真实数据框中,我有大约 10 个投资组合,我希望在自己的图表中呈现每个投资组合。我的尝试是(尽管仅在其中一列中成功):

sns.set(style ='ticks', color_codes = True)
g = sns.FacetGrid(df, col="PORTFOLIO", col_wrap = 4, height = 4)
g = g.map(plt.plot, 'DATE','IRR')

我很高兴每个投资组合都有自己的图表(彼此相邻),但是如何让 IRR 和 TWR 两列同时出现?

我希望每个图表看起来像这样:

【问题讨论】:

  • 在您的问题中,您发布的数据是字符串,您必须在创建数据框时将其更改为浮动。 .split() 也会创建字符串列表

标签: python matplotlib seaborn


【解决方案1】:

这里只是简单的改变g = g.map(plt.plot, 'DATE', 'IRR', 'TWR') 使用

df = pd.DataFrame({'PORTFOLIO': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   'DATE': ['01.01.2018', '01.04.2018', '01.07.2018', '01.10.2018', '01.01.2018',
                            '01.04.2018', '01.07.2018', '01.10.2018', ],
                   'IRR': [.7, .8, .9, .4, .2, .3, .4, .9],
                   'TWR': [.1, .3, .5, .7, .1, .0, .4, .9],
                   })

print(df)
sns.set(style='ticks', color_codes=True)
g = sns.FacetGrid(df, col="PORTFOLIO", col_wrap=4, height=4)
g = g.map(plt.plot, 'DATE', 'IRR', color='#FFAA11')
g = g.map(plt.plot, 'DATE', 'TWR', color='#22AA11')
plt.show()

【讨论】:

  • 这实际上将投资组合放在 x 轴上(而不是日期)。但更重要的是,它不会在不同的图表上拆分投资组合。
  • 你让我很开心 :)
  • 您知道分隔两行的快速方法吗?是用不同的颜色还是标签?
  • 这很简单
猜你喜欢
  • 1970-01-01
  • 2021-09-08
  • 2018-06-22
  • 2019-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多