Seaborn——可视化的具体API应用

一、Seaborn概述

        Seaborn 是基于 matplotlib的图形可视化 python包。提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。

        Seaborn在 matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易,在大多数情况下使用seaborn能做出很具有吸引力的图,而使用matplotlib就能制作具有更多特色的图。

        Seaborn和 Pandas的API配合的很好,使用DataFrame/Series的数据就可以绘图

二、绘制单变量图

1、直方图    histplot
# 导包
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 配置Matplotlib
# 设置正常显示中文
plt.rcParams['font.sans-serif'] = ['SimHei']
# 设置如何显示负号
plt.rcParams['axes.unicode_minus'] = False

rcParams:是一个字典,用于设置Matplotlib的配置参数

' font.sans-serif ':是rcParams中的一个键,它用于指定无衬线字体(sans-serif 字体)的默认字体。

[ ' SimHei ' ]:是一个列表,其中包含一个字体名称。这里,我们设置默认的无衬线字体为“SimHei”。“SimHei”是一种常用的中文字体,用于在显示中文时确保文字的正常显示。 #

' axes.unicode_minus ':用于指定是否使用Unicode字符来表示负号。

# 加载小费数据
tips = pd.read_csv('data/tips.csv')

# 使用subplots函数创建画布,并在其中添加子图
fig, ax = plt.subplot(figsize=(12,6))

# kde 绘制核密度估计
sns.histplot(tips['total_bill'],kde=True,ax=ax)
ax.set_title('总账单直方图')
plt.show()

运行结果:

 2、密度图(核密度估计)   kdeplot

        是展示单变量分布的另一种方法,本质上是通过绘制每个数据点为中心的正态分布,然后消除重叠的图,使曲线下的面积为1来创建的。

sns.kdeplot(tips['total_bill'],ax=ax)
ax.set_title('总账单KDE图')
plt.show()

运行结果:

 3、计数图(条形图)   countplot

        计数图(条形图)是对离散变量(分类变量)计数

sns.countplot(data=tips,x='day')
ax.set_title('Count of days')
ax.set_xlabel('Day of the Week')
ax.set_ylabel('Frequency')
plt.show()

运行结果:

 三、双变量数据可视化

1、散点图    scatterplot
sns.scatterplot(x='total_bill',y='tip',data=tips)
ax.set_title('Total Bill 和 Tip 散点图')
ax.set_xlabel('Total Bill')
ax.set_ylabel('Tip')
plt.show()

运行结果:

 regplot 不仅可以绘制散点图,还会拟合回归线,把 fit_reg 设置为False,将只显示散点图

sns.regplot(x='total_bill',y='tip',data=tips)
ax.set_title('regplot of Total Bill and Tip')
ax.set_xlabel('Total Bill')
ax.set_ylabel('Tip')
plt.show()

运行结果:

 lmplot 函数和regplot函数类似,也可以用于创建散点图。lmplot 函数内部会调用regplot,两者的主要区别是 regplot 创建坐标轴,而 lmplot 创建图

sns.lmplot(x='total_bill',y='tip',data=tips)

运行结果:

 还可以使用 jointplot 在每个轴上创建包含单个变量的散点图

joint = sns.jointplot(x='total_bill',y='tip',data=tips)
joint.set_axis_labels(xlabel = 'Total Bill', ylabel = 'Tip')
joint.fig.suptitle('Joint Plot of Total Bill and Tip', fontsize = 10, y=1.03)
plt.show()

运行结果:

 2、蜂巢图

使用 Seaborn 的 jointplot 绘制蜂巢图

joint = sns.jointplot(x='total_bill',y='tip',data=tips,kind='hex')
joint.set_axis_labels(xlabel = 'Total Bill', ylabel = 'Tip')
joint.fig.suptitle('Hexbin Joint Plot of Total Bill and Tip', fontsize = 10, y=1.03)
plt.show()

运行结果:

3、 2D密度图

2D密度图和 kdeplot 类似,但2D核密度图可展示两个变量

sns.kdeplot(data=tips,x='total_bill',y='tip',fill=True)    # 是否填充轮廓
ax.set_title('Kernel Density Plot of Total Bill and Tip')
ax.set_xlabel('Total Bill')
ax.set_ylabel('Tip')
plt.show()

运行结果:

sns.kdeplot(data=tips,x='total_bill',y='tip')    # 是否填充轮廓

 运行结果:

 4、条形图    barplot

barplot 默认会计算平均值

sns.barplot(x='time',y='total_bill',data=tips,errorbar=None)

运行结果:

 5、箱线图    boxplot

用于显示多种统计信息:最小值,1/4分位,中位数,3/4分位,最大值,以及离群值(如果有)

sns.boxplot(x='time',y='total_bill',data=tips)

        箱子的中间有一条线,代表了数据的中位数

        箱子的上下底,分别是数据的上四分位数(Q3)和下四分位数(Q1)

        箱体包含了50%的数据。因此,箱子的高度在一定程度上反映了数据的波动程度

        上下边缘则代表了该组数据的最大值最小值

        有时候箱子外部会有一些点,可以理解为数据中的“异常值

6、小提琴图    violinplot

        箱线图是经典的可视化方法,但可能会掩盖数据的分布,小提琴图能显示与箱线图相同的值 小提琴图把"箱线"绘成核密度估计,有助于保留数据的更多可视化信息

sns.violinplot(x='time',y='total_bill',data=tips)

 7、成对关系

        当大部分数据是数值时,可以使用 pairplot 函数把所有成对关系绘制出来

        pairplot 函数会为单变量绘制直方图,双变量绘制散点图

 sns.pairplot(tips)

 pairplot 的缺点是存在冗余信息,图的上半部分和下半部分相同

 可以使用 pairgrid 手动指定图的上半部分和下半部分

pair_grid = sns.PairGrid(tips)
pair_grid.map_upper(sns.regplot)
pair_grid.map_lower(sns.kdeplot)
pair_grid.map_diag(sns.histplot)
plt.show()

 

 四、多变量数据

1、通过颜色区分

        使用 violinplot 函数时,可以通过 hue 参数按性别(sex)给图着色,可以为“小提琴”的左右两半着不同颜色,用于区分性别

sns.violinplot(x='time', y='total_bill', hue='sex', data=tips, split=True)

 

scatter = sns.lmplot(x='total_bill', y='tip', data = tips, hue='sex', fit_reg = False)

sns.pairplot(tips, hue = 'sex')

 2、通过大小和形状区分

        可以通过点的大小表示更多信息,但通过大小区分应谨慎使用,当大小差别不大时很难区分 在Seaborn中的 lmplot,可以通过 scatter_kws 参数来控制散点图点的大小

scatter = sns.lmplot(x='total_bill', y='tip', data = tips, fit_reg=False, hue='sex', markers=['o','x'])

五、Seaborn主题和样式

        可以使用 sns.set_style 函数更改样式,该函数只要运行一次,后续绘图的样式都会发生变化 Seaborn 有5种样式:darkgrid 黑色网格(默认)、whitegrid 白色网格、dark 黑色背景、white 白色背景

fig,ax = plt.subplots()
ax = sns.violinplot(x='time', y='total_bill', hue='sex', data = tips, split = True)

  • 52
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 目录 1. 目录 2 2. 绘图函数Plotting functions 4 2.1. 可视化的统计关系Visualizing statistical relationships 4 2.1.1. 用散点图联系变量Relating variables with scatter plots 4 2.1.2. 强调线条图的连续性Emphasizing continuity with line plots 10 2.1.3. 显示与切面的多个关系Showing multiple relationships with facets 21 2.2. 分类数据绘图Plotting with categorical data 24 2.2.1. 分类散点图Categorical scatterplots 26 2.2.2. 分类观测值分布Distributions of observations within categories 31 2.2.3. 分类统计估计Statistical estimation within categories 37 2.2.4. 对“wide-form”数据作图Plotting “wide-form” data 41 2.2.5. 显示与facet的多个关系Showing multiple relationships with facets 43 2.3. 可视化数据集的分布Visualizing the distribution of a dataset 44 2.3.1. 绘制单变量分布Plotting univariate distributions 45 2.3.2. 绘制二元分布Plotting bivariate distributions 51 2.3.3. 在数据集中可视化成对关系Visualizing pairwise relationships in a dataset 55 2.4. 可视化线性关系Visualizing linear relationships 57 2.4.1. 函数绘制线性模型Functions to draw linear regression models 58 2.4.2. 拟合不同种类的模型Fitting different kinds of models 61 2.4.3. 在其他变量上的情况Conditioning on other variables 68 2.4.4. 控制图表的大小和形状Controlling the size and shape of the plot 71 2.4.5. 在其他上下文中绘制回归图Plotting a regression in other contexts 73 3. 多图网格Multi-plot grids 76 3.1. 构建结构化的多图网格Building structured multi-plot grids 76 3.2. 有条件的小倍数Conditional small multiples 77 3.3. 使用定制函数Using custom functions 86 3.4. 绘制成对的数据关系Plotting pairwise data relationships 90 4. 绘图美学Plot aesthetics 99 4.1. 控制图表美学Controlling figure aesthetics 99 4.1.1. Seaborn图表风格Seaborn figure styles 101 4.1.2. 删除轴上的小凸起Removing axes spines 104 4.1.3. 临时设置图表样式Temporarily setting figure style 105 4.1.4. 覆盖Seaborn样式的元素Overriding elements of the seaborn styles 106 4.1.5. 缩放图表元素Scaling plot elements 108 4.2. 选择调色板Choosing color palettes 111 4.2.1. 创建颜色调色板Building color palettes 111 4.2.2. 定性调色板Qualitative color palettes 112 4.2.3. 连续调色板Sequential color palettes 116 4.2.4. 不同颜色的调色板Diverging color palettes 122 4.2.5. 设置默认调色板Setting the default color palette 124 5. 教程中的数据集 125

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值