Как с помощью seaborn (catplot или barplot) на одном графике отобразить значение нескольких?
Как с помощью seaborn (catplot или barplot) на одном графике отобразить значение нескольких столбцов DataFrame? Ниже приведен не рабочий код. Он корректно отображает график только для одного столбца, а нужно чтобы отображал несколько столбцов, как приведено ниже на примере.
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
c1 = [0.3, 0.5, 0, 0.9]
c2 = [0.7, 0, 0.1, 0]
dct = {'c1':c1, 'c2':c2}
df = pd.DataFrame(dct)
print(df)
sns.barplot(x=df.index.values, y='c1', data=df)
#sns.barplot(x=df.index.values, y='c2', data=df)
plt.show()
Желаемый график
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Примерный вариант. Наверное, можно ещё как-то красивше, но пока не придумал:
df1 = df.stack().reset_index(level=1)
df1.columns = ['c', 'value']
sns.barplot(x=df1.index.values, y='value', hue='c', data=df1)
plt.show()
То есть нужно сделать такой DataFrame, чтобы можно было через hue разделить столбцы на c1 и c2. В df1 у меня при этом получилось следующее:
c value
0 c1 0.3
0 c2 0.7
1 c1 0.5
1 c2 0.0
2 c1 0.0
2 c2 0.1
3 c1 0.9
3 c2 0.0
Автор решения: CrazyElf
→ Ссылка
Кстати, если Seaborn - это не обязательное условие, то всё вообще просто:
df.plot(kind='bar');
# или df.plot.bar();


