gpt4 book ai didi

python - seaborn FacetGrid,按行和列分隔的排名条形图

转载 作者:太空宇宙 更新时间:2023-11-04 10:36:13 28 4
gpt4 key购买 nike

给定一些数据:

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')

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

最佳答案

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

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)

绘制:

enter image description here

虽然我不建议完全按照您的建议进行(在每个方面为不同的 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)

制作

enter image description here

关于python - seaborn FacetGrid,按行和列分隔的排名条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23242634/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com