Seaborn是基于matplotlib的图形可视化python包。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。Seaborn是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。应该把Seaborn视为matplotlib的补充,而不是替代物。同时它能高度兼容numpy与pandas数据结构以及scipy与statsmodels等统计模式。

一、预备工作

先做好使用前的预备工作:

看下所使用的version

import seaborn as sns
sns.__version__

在这里插入图片描述

导入相关的模块

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import pandas as pd
%matplotlib inline

# 显示正负号与中文不显示问题
plt.rcParams['axes.unicode_minus'] = False
sns.set_style('darkgrid', {'font.sans-serif':['SimHei', 'Arial']})

# 去除部分warning
import warnings
warnings.filterwarnings('ignore')

二、barplot

(一)语法

seaborn.barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,\
                estimator=<function mean>,ci=95, n_boot=1000, units=None, orient=None,\
                color=None, palette=None, saturation=0.75,\
                errcolor='.26', errwidth=None, capsize=None, dodge=True, ax=None, **kwargs)

注意分行

条形图以矩形条的方式展示数据的点估值和置信区间

输入数据的格式可以不同,包括:

  • 以列表,numpy array 或者 pandas 中的 Series object 表示的向量。这些向量可以直接传入 x, y, 以及 hue 参数。
  • 长表, x 值,y 值和色相变量决定了数据是如何绘制的。
  • 宽表,每个列的数值都会被绘制出来.
  • 数组或者列表的向量。

大多数情况下,可以使用 numpy 的对象或者 python 的对象,但是用 pandas 对象更好,因为相关的列名会被标注在图标上。 另外,为了控制绘图元素 也可以可以用分类类型来组合不同的变量。


(二)参数详解

  • xyhue:< data中的变量名词或者向量 >
    data中用于绘制图表的变量名

  • data:< DataFrame, 数组, 数组列表 >
    是用于绘图的数据集

  • orderhue_order:< 字符串列表 >
    绘制类别变量的顺序,若没有,则会从数据对象中推断绘图顺序

  • estimator:< 映射向量 -> 标量 >
    统计函数用于估计每个分类纸条中的值

  • ci:< float or “sd” or None >
    估计值周围的置信区间大小。若输入的是sd,会跳过bootstrapping的过程,只绘制数据的标准差;
    若输入的是None,不会执行bootstrapping,而且错误条也不会绘制

  • n_boot:< int >
    计算置信区间需要的 Boostrap 迭代次数。

  • units:< data中的变量名词或向量 >
    采样单元的标识符,用于执行多级 bootstrap 并解释重复测量设计。

  • orient:< “v” 或 “h” >
    绘图的方向(垂直或水平)。这通常是从输入变量的数据类型推断出来的,但是可以用来指定“分类”变量是数字还是宽格式数据。

  • color:< matplotlib color >
    作用于所有元素的颜色,或者渐变色的种子。

  • palette:< palette name, list, or dict >
    不同级别的 hue 变量的颜色。 颜色要能被 [color_palette()]解释(seaborn.color_palette.html#seaborn.color_palette “seaborn.color_palette”), 或者一个能映射到 matplotlib 颜色的字典。

  • saturation:< float >
    原始饱和度与绘制颜色的比例。大的色块通常在稍微不饱和的颜色下看起来更好,但是如果希望打印颜色与输入颜色规格完全匹配,请将其设置为1。

  • errcolor:< matplotlib color >
    表示置信区间的线的颜色。

  • errwidth:< float >
    误差条的线的厚度。

  • capsize:< float >
    误差条端部的宽度。

  • dodge : < 布尔型 >
    当使用色调嵌套时,元素是否应该沿分类轴移动。

  • ax:< matplotlib Axes >
    指定一个 Axes 用于绘图,如果不指定,则使用当前的 Axes。

  • kwargs:< key, value mappings >
    其他的关键词参数在绘图时通过 plt.bar 传入。


(三)实例

首先最简单的画个柱形图

plt.figure(dpi=150)
x = ['金融','农业','制造业','新能源']
y = [164, 86, 126, 53]
sns.barplot(x, y)

在这里插入图片描述


还可以通过order改变变量顺序

plt.figure(dpi=150)
x = ['金融','农业','制造业','新能源']
y = [164, 86, 126, 53]
sns.barplot(x, y, order=['金融','制造业','农业','新能源'])

在这里插入图片描述


通过saturation调整饱和度,默认值为0.75

plt.figure(dpi=150)
x = ['金融','农业','制造业','新能源']
y = [164, 86, 126, 53]
sns.barplot(x, y, order=['金融','制造业','农业','新能源'], saturation=0.2)

在这里插入图片描述


还可以选用Seaborn的内置数据集来进行可视化处理

首先导入数据集

tips = sns.load_dataset('tips')
tips.head(5)

在这里插入图片描述

可以通过tips.info()查看数据集的一些具体信息
在这里插入图片描述
总共有7个特征,244条数据。接下来进行可视化处理

通过添加hue来绘制一组由两个变量嵌套分组的垂直条形图

plt.figure(dpi=150)
sns.barplot(x = 'day', y = 'tip', data = tips, hue = 'sex')

在这里插入图片描述

其中每个柱条的黑色的线条为误差线
误差线源于统计学,表示数据误差(或不确定性)范围,以更准确的方式呈现数据。误差线可以用标准差(standard deviation,SD)、标准误(standard error,SE)和置信区间表示,使用时可选用任意一种表示方法并作相应说明即可。当误差线比较“长”时,一般要么是数据离散程度大,要么是数据样本少。


绘制水平的条形图

plt.figure(dpi=150)
sns.barplot(y = 'day', x = 'tip', data = tips)

在这里插入图片描述


要是觉得这个默认的色系不好看,可以使用一个不同的调色盘来绘制图案

plt.figure(dpi=150)
sns.barplot(x = 'size', y = 'tip', data = tips, palette="Blues_d")

在这里插入图片描述

对于palette的一些具体说明,会在后续慢慢阐述。


用误差条显示平均值的标准误差

plt.figure(dpi=150)
sns.barplot(x = 'size', y = 'tip', data = tips, palette="Blues_d", ci=95)

在这里插入图片描述


还可以个性化误差线(调整线的颜色和厚度)

plt.figure(dpi=150)
sns.barplot(x = 'size', y = 'tip', data = tips, palette="plasma_r", ci=95,
           errcolor='yellow', errwidth=2, alpha=0.3)

在这里插入图片描述


给误差条增加"端点"

plt.figure(dpi=150)
sns.barplot(x = 'size', y = 'tip', data = tips, palette="plasma_r", ci=95,
           errcolor='yellow', errwidth=2, capsize=0.1,alpha=0.3)

在这里插入图片描述


在使用hue后,柱形本身的宽度会发生改变。若想保持柱形原宽度,可以设置dodge=False

plt.figure(dpi=150)
tips["weekend"] = tips["day"].isin(["Sat", "Sun"])
sns.barplot(x="day", y="total_bill", hue="weekend",data=tips, dodge=False)

在这里插入图片描述


还可以用plt.bar中的一些参数

plt.figure(dpi=150)
sns.set_style('white')
sns.barplot(x="day", y="total_bill", data=tips,
            linewidth=2.5, facecolor=(1, 1, 1, 0),
            errcolor=".2", edgecolor=".2")

在这里插入图片描述

Logo

鸿蒙生态一站式服务平台。

更多推荐