可以收藏 :如何用seaborn简单有效的画出多个barplot

有时我们想在子图中绘制多个条形图(barplot),这个例子展示了一个很好的方法。

上传样本数据

import seaborn as sns
sns.set_theme(style="whitegrid")
tips = sns.load_dataset("tips")

tips.head(2)
total_billtipsexsmokerdaytimesize
016.991.01FemaleNoSunDinner2
110.341.66MaleNoSunDinner3

按日期和性别聚合数据,并汇总每个维度下的小费(tips)

tips_agg = tips.groupby(['day','sex'])['tip'].sum().reset_index()
tips_agg
daysextip
0ThurMale89.41
1ThurFemale82.42
2FriMale26.93
3FriFemale25.03
4SatMale181.95
5SatFemale78.45
6SunMale186.78
7SunFemale60.61

如果未安装,请安装最新的 seaborn 包

!pip install seaborn==0.11.2

可视化数据中每个不同工作日的男性与女性的小费数量

from matplotlib import pyplot as plt
import seaborn as sns
import math

# automatically adjust the rows and colums 
all_days = list(set(tips_agg['day']))
n_cols = 3
n_rows = math.ceil(len(all_days)/n_cols)


# give the figsize
fig, axes = plt.subplots( n_rows, n_cols, figsize=(20, 10))


for i in range(n_rows):
  for j in range(n_cols):
    index = i*n_cols+j
    
    if index >= len(all_days):
      break

    day = all_days[index]
    bp = sns.barplot(ax=axes[i, j], data=tips_agg[tips_agg['day']==day], x='sex', y='tip')
    bp.set(title=day)
    for item in bp.get_xticklabels():
        item.set_rotation(45)

# if the x axis title is very long, this configuration will be very useful 
plt.tight_layout()

在这里插入图片描述

更多精彩内容,请点击
data science examples

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值