#python #matplotlib #seaborn
#python #matplotlib #сиборн
Вопрос:
У меня есть фрейм данных (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 отображаться вместе?
Я хочу, чтобы каждый график выглядел примерно так:
Комментарии:
1. в вашем вопросе ваши опубликованные данные являются строковыми, вы должны изменить их на float при создании dataframe.
.split()
также создаст список строк
Ответ №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()
Комментарии:
1. Это фактически помещает портфолио по оси x (вместо даты). Но что более важно, это не разбивает портфели на разные графики.
2. вы только что сделали мой день 🙂
3. знаете ли вы быстрый способ разделить две строки? Либо с другой раскраской, либо, может быть, с ярлыком?
4. это простая вещь