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

  • 基础柱状图

  • 水平柱状图

  • 标题设置

  • 基于DataFrame绘图

  • hue参数设置

  • 颜色处理

  • 多维度处理

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

74a92568dd25a046c3a9216b9d43c870.jpeg

导入库

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()
5c2db2047bceba20ab1ab9d9952e3e8d.jpeg

基础柱状图

In [3]:

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

sns.barplot(x, y)
plt.show()
9a163fa1946eeb8e72768e7b7bde910c.jpeg

绘制水平柱状图:

# 水平柱状图

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

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

设置标题

In [14]:

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

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

plt.show()
9b03be4248a9d405b3e48b5615647c16.jpeg

指定x-y-data

In [5]:

# 通过DataFrame来指定

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

hue参数

实现的分组显示数据

In [6]:

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

水平柱状图

In [7]:

ax = sns.barplot(x="total_bill", 
                 y="day", 
                 data=tips)
53811f014ad535cc58431adfd562a4ec.jpeg

自定义顺序

In [8]:

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

颜色处理

使用一种颜色

In [9]:

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

颜色渐变

In [10]:

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

多维分组

In [11]:

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

True/False分组

In [12]:

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

Out[12]:

359657eeaf4d036310a6684f654c0901.jpeg

In [13]:

ax = sns.barplot(x="day", 
                 y="tip", 
                 hue="weekend",
                 data=tips, 
                 dodge=False)
f35ceee620ccac8558cabd3fdc0f815f.jpeg
- END -
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐