我有一个如下所示的数据框, df_销售:
ProductCode Weekly_Units_Sold Is_Promo
Date
2015-01-11 1 49.0 No
2015-01-11 2 35.0 No
2015-01-11 3 33.0 No
2015-01-11 4 40.0 No
2015-01-11 5 53.0 No
... ... ... ...
2015-07-26 313 93.0 No
2015-07-26 314 4.0 No
2015-07-26 315 1.0 No
2015-07-26 316 5.0 No
2015-07-26 317 2.0 No
希望观察以下Sns.factorplot类似代码对每个ProductCode的PromotTime效果:
sns.factorplot(data= df_sales,
x= 'Is_Promo',
y= 'Weekly_Units_Sold',
hue= 'ProductCode');
它运行良好,但由于317个产品绘制在一个表中,因此它看起来非常混乱和重叠。(https://i.stack.imgur.com/fgrjV.png)
使用此代码拆分数据帧时:
df_sales=df_sales.query('1<=ProductCode<=10')
它看起来可读性很好。 https://i.stack.imgur.com/NTQev.png
因此,ı希望借助于拆分10个productcode范围的数据来绘制子批次(比如第一个子批次productcode为[1-10],第二个子批次productcode为[11-20]…[291-300],[301-310],[311-317])
我失败的尝试:`
g=sns.FacetGrid(df_sales,col='ProductCode')
g.map(sns.factorplot,'Is_Promo','Weekly_Units_Sold')
sns.factorplot(data= df_sales,
x= 'Is_Promo',
y= 'Weekly_Units_Sold',
hue= 'ProductCode');
我尝试不使用10个ProductCode范围进行拆分。 我刚刚尝试为每个ProductCode创建子包,但是 给我图像大小错误
那么,我如何创建sns.factorplot的子图,根据ProductCode范围进行拆分,以获得更易于阅读的结果呢
谢谢
您需要为每组产品创建一个具有唯一值的新列。一种简单的方法是使用^{}
之后,您可以基于
ProductGroup
来刻面,并为每个组绘制您想要的任何关系请注意,这是使用seaborn v.0.10.0实现的
factorplot()
在v.0.9中被重命名为catplot
,因此您可能需要调整版本差异EDIT:要创建图例,我必须稍微修改代码,将
hue
参数移出FacetGrid:相关问题 更多 >
编程相关推荐