【问题标题】:seaborn FacetGrid , ranked barplot separated on row and colseaborn FacetGrid ,按行和列分隔的排名条形图
【发布时间】:2014-04-23 11:16:06
【问题描述】:

给定一些数据:

pt = pd.DataFrame({'alrmV':[000,000,000,101,101,111,111],
                   'he':[e,e,e,e,h,e,e],
                   'inc':[0,0,0,0,0,1,1]})

我想创建一个以行和列分隔的条形图。

g = sns.FacetGrid(pt, row='inc', col='he', margin_titles=True)
g.map( sns.barplot(pt['alrmV']), color='steelblue')

这个,有效,但我还怎么添加:

  1. 有序的 x 轴
  2. 仅显示计数前两位的alrmV 类型

为了获得一个显示前 2 个计数类型的有序 x 轴,我尝试了这个分组,但无法将它放入 Facet 网格中:

grouped = pt.groupby( ['he','inc'] )
grw= grouped['alrmV'].value_counts().fillna(0.) #.unstack().fillna(0.)
grw[:2].plot(kind='bar')

使用 FacetGrid,切片限制显示的总数

g.map(sns.barplot(pt['alrmV'][:10]), color='steelblue')

那么我怎样才能得到一个条形图,它在 row 和 col 上分开,并且是有序的并且只显示前 2 个计数?

【问题讨论】:

  • 在此处为安装了 >0.9.0 的其他人添加评论,您可能会发现 this 解决方案很有帮助

标签: python seaborn


【解决方案1】:

我无法让示例与您提供的数据一起使用,因此我将使用其中一个示例数据集进行演示:

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

我们将在列中使用sex,在行中使用smoker,使用day 作为条形图的x 变量来绘制图。要按顺序排列前两天,我们可以这样做

top_two_ordered = tips.day.value_counts().order().index[-2:]

然后您可以将此列表传递给barplotx_order 参数。

虽然你可以在这里直接使用FacetGrid,但使用factorplot函数可能更容易:

g = sns.factorplot("day", col="sex", row="smoker",
               data=tips, margin_titles=True, size=3,
               x_order=top_two_ordered)

哪个抽奖:

虽然我不建议完全按照您的建议进行操作(为每个方面的不同 x 值绘制条形图),但可以通过执行类似的操作来完成

g = sns.FacetGrid(tips, col="sex", row="smoker", sharex=False)

def ordered_barplot(data, **kws):
    x_order = data.day.value_counts().order().index[-2:]
    sns.barplot(data.day, x_order=x_order)

g.map_dataframe(ordered_barplot)

制作

【讨论】:

  • 好的,是否可以获得每个性别的子组值计数?因此,如果男性在周一、周二吸烟更多……也就是说,你能以某种方式传递分组值吗?
  • 不,不是通过 seaborn。我认为这将是一个令人困惑的情节。
  • 这并不完全正确。你可以做到这一点,但我不建议这样做。请参阅编辑以回答。
  • --谢谢! (尝试为轴标签设置(rot=10).. 不走运,我怎样才能旋转轴标签?-对不起,如果这是一个简单的问题,但找不到它)
  • 如果你的意思是 xticklabels 你可以做g.set_xticklabels(rotation=10) 虽然那只会做最底行(我猜这实际上是一个错误)。对于其他事情,您需要遍历g.axes 处的轴数组并像在 matplotlib 中一样更改它们。
猜你喜欢
  • 2016-05-15
  • 1970-01-01
  • 2019-02-18
  • 1970-01-01
  • 2015-11-22
  • 2021-03-01
  • 2017-10-01
  • 2020-09-24
相关资源
最近更新 更多