比较(一)利用python绘制条形图

比较(一)利用python绘制条形图

条形图(Barplot)简介

1

条形图主要用来比较不同类别间的数据差异,一条轴表示类别,另一条则表示对应的数值度量。

快速绘制

  1. 基于seaborn

    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # 导入数据
    tips = sns.load_dataset("tips")
    
    # 利用barplot函数快速绘制
    sns.barplot(
        x="total_bill", 
        y="day", 
        data=tips, 
        estimator=sum, 
        errorbar=None, 
        color='#69b3a2')
    
    plt.show()
    

    2

  2. 基于matplotlib

    import matplotlib.pyplot as plt
    
    # 导入数据
    tips = sns.load_dataset("tips")
    grouped_tips = tips.groupby('day')['total_bill'].sum().reset_index()
    
    # 利用bar函数快速绘制
    plt.bar(grouped_tips.day, grouped_tips.total_bill)
    
    plt.show()
    

    3

  3. 基于pandas

    import matplotlib.pyplot as plt
    import pandas as pd
    
    # 导入数据
    tips = sns.load_dataset("tips")
    grouped_tips = tips.groupby('day')['total_bill'].sum().reset_index()
    
    # 利用plot.bar函数快速绘制
    grouped_tips.plot.bar(x='day', y='total_bill', rot=0)
    
    plt.show()
    

    4

定制多样化的条形图

自定义条形图一般是结合使用场景对相关参数进行修改,并辅以其他的绘图知识。参数信息可以通过官网进行查看,其他的绘图知识则更多来源于实战经验,大家不妨将接下来的绘图作为一种学习经验,以便于日后总结。

通过seaborn绘制多样化的条形图

seaborn主要利用barplot绘制条形图,可以通过seaborn.barplot了解更多用法

  1. 修改参数

    import seaborn as sns
    import matplotlib.pyplot as plt
    import numpy as np
    
    sns.set(font='SimHei', font_scale=0.8, style="darkgrid") # 解决Seaborn中文显示问题
    
    # 导入数据
    tips = sns.load_dataset("tips")
    
    # 构造子图
    fig, ax = plt.subplots(2,2,constrained_layout=True, figsize=(8, 8))
    
    # 修改方向-垂直
    ax_sub = sns.barplot(
        y="total_bill", 
        x="day", 
        data=tips, 
        estimator=sum, 
        errorbar=None, 
        color='#69b3a2',
        ax=ax[0][0]
        )
    ax_sub.set_title('垂直条形图')
    
    # 自定义排序
    ax_sub = sns.barplot(
        y="total_bill", 
        x="day", 
        data=tips, 
        estimator=sum, 
        errorbar=None, 
        color='#69b3a2',
        order=["Fri","Thur","Sat","Sun"],
        ax=ax[0][1]
        )
    ax_sub.set_title('自定义排序')
    
    # 数值排序
    df = tips.groupby('day')['total_bill'].sum().sort_values(ascending=False).reset_index()
    ax_sub = sns.barplot(
        y="day", 
        x="total_bill", 
        data=df, 
        errorbar=None, 
        color='#69b3a2',
        order=df['day'],
        ax=ax[1][0]
        )
    ax_sub.set_title('数值排序')
    
    # 添加误差线
    ax_sub = sns.barplot(
        x="day", 
        y="total_bill", 
        data=tips, 
        estimator=np.mean, 
        errorbar=('ci', 85), 
        capsize=.2, 
        color='lightblue',
        ax=ax[1][1]
        )
    ax_sub.set_title('添加误差线')
    
    plt.show()
    

    5

  2. 分组条形图

    import seaborn as sns
    import matplotlib.pyplot as plt
    import numpy as np
    
    sns.set(style="darkgrid")
    
    # 导入数据
    tips = sns.load_dataset("tips")
    
    fig, ax = plt.subplots(figsize=(4, 4))
    
    # 分组条形图
    colors = ["#69b3a2", "#4374B3"]
    sns.barplot(x="day", y="total_bill", hue="smoker", data=tips, errorbar=None, palette=colors)
    
    plt.show()
    
    
    # 分组/子分组条形图
    sns.catplot(x="sex", y="total_bill"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值