Pandas groupby以不同的X轴顺序绘制

时间:2017-07-05 08:04:41

标签: python pandas matplotlib seaborn

我正在研究titanic.csv,并尝试制作一些情节。遇到一个问题。如何重新组织x轴以将相同的pclass值放在一起。

我目前的代码:

titanic.groupby(['Sex', 'Pclass'])['Survived'].mean().plot(kind='bar', color=my_colors)

生成以下图表: enter image description here

我想把同一个班级的男性和女性放在一起,以显示存活率的差异。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

只需更改groupby中列的顺序:

["sachin.company", "sachin.in", "sachin.community", "sachin.com", "sachin.computer", "sachin.co.in", "sachin.org", "sachin.compare", "sachin.net"]

enter image description here

或者你可以堆叠吧:

import pandas as pd
import seaborn as sns
import matplotlib.pylab as plt

titanic = sns.load_dataset("titanic")

my_colors = ['r','g','b','k','y','magenta']
titanic.groupby(['pclass', 'sex'])['survived'].mean().plot(kind='bar', color=my_colors)
plt.show()

enter image description here

为什么使用titanic.groupby(['pclass', 'sex'])['survived'].mean().unstack('sex').plot(kind='bar', stacked=True) 代替mean

答案 1 :(得分:0)

Altair在这里非常方便。这里有3个不同的单行,可以产生这个数据集的三种不同的可视化。

import seaborn as sns
titanic = sns.load_dataset("titanic")

from altair import *

首先即

Chart(titanic).mark_bar().encode(x='pclass:O', y='mean(survived)', column='sex').configure_cell(width=200, height=200)

enter image description here

第二个即

Chart(titanic).mark_bar().encode(x='sex:N', y='mean(survived):Q',  column='pclass:O').configure_facet_cell(
        strokeWidth=0.0).configure_cell(width=200, height=200)

enter image description here

第三个即

Chart(titanic).mark_bar().encode(x='pclass:O', y='mean(survived):Q',  color='sex:O').configure_cell(width=200, height=200)

enter image description here