社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

【Python】Seaborn绘制11个柱状图

机器学习初学者 • 3 年前 • 415 次点击  

公众号:尤而小屋   作者:Peter   编辑:Peter

本文介绍的是如何使用seaborn来绘制各种柱状图

  • 基础柱状图
  • 水平柱状图
  • 标题设置
  • 基于DataFrame绘图
  • hue参数设置
  • 颜色处理
  • 多维度处理

个人很喜欢的一个Seaborn绘制的图形:

导入库

Seaborn是matplotlib的高级封装,所以matplotlib还是要同时导入:

In [1]:

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

sns.set_theme(style="whitegrid")
sns.set_style('darkgrid')

导入内置数据

使用的是seaborn中内置的一份消费tips数据集:

In [2]:

tips = sns.load_dataset("tips")
tips.head()

基础柱状图

In [3]:

x = ["A","B","C"]
y = [1, 2, 3]

sns.barplot(x, y)
plt.show()

绘制水平柱状图:

# 水平柱状图

x = ["A","B","C"]
y = [123]

sns.barplot(y, x)
plt.show()

设置标题

In [14]:

x = ["A","B","C"]
y = [1, 2, 3]

fig = sns.barplot(x, y)
fig.set_title('title of seaborn')

plt.show()

指定x-y-data

In [5]:

# 通过DataFrame来指定

ax = sns.barplot(x="day", y="tip", data=tips)
plt.show()

hue参数

实现的分组显示数据

In [6]:

ax = sns.barplot(x="day"
        y="total_bill"
        hue="sex"
        data=tips)

水平柱状图

In [7]:

ax = sns.barplot(x="total_bill"
                 y="day"
                 data=tips)

自定义顺序

In [8]:



    
ax = sns.barplot(x="total_bill"
                 y="day"
                 # 添加order参数,指定顺序
                 order=["Sat","Fri","Sun","Thur"],  # 自定义
                 data=tips)

颜色处理

使用一种颜色

In [9]:

ax = sns.barplot(x="size"
                 y="total_bill"
                 data=tips,
                 color="salmon"
                 saturation=.5)

颜色渐变

In [10]:

ax = sns.barplot(x="size"
                 y="tip"
                 data=tips,
                 palette="Blues")

多维分组

In [11]:

g = sns.catplot(x="sex"
                y="total_bill",
                hue="smoker"
                col="time",
                data=tips, 
                kind="bar",
                height=4, 
                aspect=.7)

True/False分组

In [12]:

tips["weekend"] = tips["day"].isin(["Sat""Sun"])
tips

Out[12]:

In [13]:

ax = sns.barplot(x="day"
                 y="tip"
                 hue="weekend",
                 data=tips, 
                 dodge=False)



    
往期 精彩回顾




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/136941