文章目录

  • 可视化数据的分布
    • 绘制单变量分布
    • 绘制双变量分布
    • 绘制成对的双变量分布
  • 用分类数据绘图
    • 类别散点图
      • 通过stripplot()函数画散点图
      • swarmplot()函数
    • 类别内的数据分布
      • 绘制箱型图
      • 绘制提琴图
    • 类别内的统计估计
      • 绘制条形图
      • 绘制点图

可视化数据的分布

绘制单变量分布

一般采用最简单的直方图描述单变量的分布情况。Seaborn中提供了displot()函数。

distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None,
hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None,
color=None, vertical=False, norm_hist=False, axlabel=None,
label=None, ax=None)

上述函数中常用的参数含义如下:

  1. a:表示要观察的数据,可以是Sries、一维数组或列表
  2. bins:用于控制条形的数量
  3. hist:接收布尔类型,表示是否绘制(标注)直方图
  4. kde:接收布尔类型,表示是否绘制高斯核密度估计曲线
  5. rug:接收布尔类型,表示是否在支持的轴的方向上绘制rugplot

通过distplot()函数绘制直方图:

import seaborn as sns
import numpy as npsns.set()  # 显式调用set()获取默认绘图
np.random.seed(0)  # 确定随机数生成器的种子
arr = np.random.randn(100)  # 生成随机数组
ax = sns.distplot(arr, bins=10)  # 绘制直方图

输出结果:

由图可得,直方图共有10个条柱,每个条柱的颜色为蓝色,并且拥有核密度估计曲线。核密度估计是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,可以比较直观地看出数据样本本身的分布特征。


如果想要仅拥有核密度估计曲线,设置相关参数即可:

arr_random = np.random.randint(0, 100, 500)  # 绘制包含500个位于[0, 100)之间的随机整数数组
sns. distplot(arr_random, hist=False, rug=True)  # 绘制核密度估计曲线

输出结果:

绘制一条核密度估计曲线,并且在x轴的上方生成了观测数值的小细条。

注意:如果希望Seaborn用Matplotlib的默认样式,之前可以通过从Seaborn库中导入apionly模块解决这个问题,但是从2017年7月起这个方法已经被弃用了。因此,现在导入Seaborn时,需要显式地调用set()或set_style()、set_context()和set_palette()中的一个或多个函数,以获取Seaborn或者Matplotlib默认的绘图样式。

拟合并绘制核密度估计曲线还可以使用kedeplot()函数


绘制双变量分布

两个变量的二元分布可视化可以显示两个变量之间的双变量关系以及每个变量在单独坐标轴上的单变量分布。

jointplot(x, y, data=None, kind=“scatter”, stat_func=None,
color=None, height=6, ratio=5, space=.2,
dropna=True, xlim=None, ylim=None,
joint_kws=None, marginal_kws=None, annot_kws=None, **kwargs)

上述函数中常用参数的含义如下:

  1. kind:表示绘制图形的类型
  2. stat_func:用于计算有关关系的统计量并标注图
  3. size:用于设置图的大小(正方形)
  4. ratio:表示中心图与侧边图的比例。该参数的值越大,则中心图的占比会越大。
  5. space:用于设置中心图与侧边图的间隔大小。
  6. xlim,ylim:表示x、y轴的范围。

绘制散点图:

dataframe_obj = pd.DataFrame({"x": np.random.randn(500),"y": np.random.randn(500)})  # 创建DataFrame对象
sns.jointplot(x="x", y='y', data=dataframe_obj)  # 绘制散点图

输出结果:

x轴的名称为“x”,y轴的名称为“y”,两轴的数据均为500个随机数。可以看到的是散点图的上方和右侧增加了直方图,便于观察x和y轴数据的整体分布情况,并且它们的均值都是0。


绘制二维直方图:

dataframe_obj = pd.DataFrame({"x": np.random.randn(500),"y": np.random.randn(500)})  # 创建DataFrame对象
sns.jointplot(kind='hex', data=dataframe_obj, x='x', y='y')  # 绘制二维直方图

输出结果:

从六边形颜色的深浅,可以观察到数据密集的程度,图形的上方和右侧依然给出了直方图。

注意: 绘制二维直方图时最好是用白色背景以便观察六边形颜色深浅。


绘制核密度估计图形:

利用核密度估计同样可以查看二元分布,Seaborn中用等高线图来表示。

sns.jointplot(kind='kde', x='x', y='y', data=dataframe_obj)  # 绘制核密度估计图形

输出结果:

绘制了核密度的等高线图,通过观察等高线的颜色深浅,可以看出哪个范围的数值分布的最多,哪个范围的数值分布的最少。同样的,在图形的上方和右侧给出了核密度曲线图。


绘制成对的双变量分布

要想在数据集中绘制成对的双变量分布,则可以使用pairplot()函数实现,该函数会创建一个坐标轴矩阵,并显示DataFrame对象中每对变量的关系。该函数亦可绘制每个变量在对角轴上的单变量分布。

代码如下:

通过load_dataset()函数加载了seaborn中内置的数据集,根据tips数据集绘制多个双变量分布。【如无法正确运行,则在这里下载zip文件,然后在电脑中,使用搜索功能找到seaborn-data文件夹,将zip文件解压到文件夹中,具体步骤如下图:】

dataset = sns.load_dataset("tips")  # 加载seaborn中的数据集
sns.pairplot(dataset)  # 绘制多个成对的双变量分布

输出结果:


用分类数据绘图

类别散点图

stripplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,
jitter=True, dodge=False, orient=None, color=None, palette=None,
size=5, edgecolor=“gray”, linewidth=0, ax=None, **kwargs)

上述函数中常用参数如下:

  1. x,y,hue:用于绘制长葛市数据的输入。
  2. data:用于绘制的数据集。如果x和y不存在,则它将作为宽格式,否则将作为长格式。
  3. order,hue_order:用于绘制分类的级别。
  4. jitteer:表示抖动的程度(仅沿类别轴)。当很多数据点重叠时,可以指定抖动的数量,或者设为True使用默认值。

通过stripplot()函数画散点图

代码如下:

tips = sns.load_dataset("tips")
sns.stripplot(x='day', y='total_bill', data=tips)

输出结果:

从图中可以看出,图标横坐标时分类的数据,而且一些数据点会互相重叠,不易于观察。可以在调用stripplot()函数时传入jitter参数,以调整横坐标的位置。


改变横坐标的位置:

tips = sns.load_dataset("tips")
sns.stripplot(x='day', y='total_bill', data=tips, jitter=True)

输出结果:


swarmplot()函数

亦可使用swarmplot()函数绘制散点图,该函数的好处是所有的数据点都不会重叠,可以很清晰地观察到数据的分布情况。

代码如下:

tips = sns.load_dataset("tips")
sns.swarmplot(x='day', y='total_bill', data=tips)

输出结果:


类别内的数据分布

由于散点图查看各个分类中的数据分布不够直观,故可利用下列两种图形查看:

  1. 箱型图:直观地查看数据的四分位分布(1/4分位,中位数,3/4分位以及四分位距)
  2. 提琴图:箱型图与核密度图地的结合,可以展示任意位置的密度,可以很直观地看到哪些位置的密度较高

绘制箱型图

boxplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,
orient=None, color=None, palette=None, saturation=.75,
width=.8, dodge=True, fliersize=5, linewidth=None,
whis=1.5, ax=None, **kwargs)

上述函数常用参数如下:

  1. orient:表示数据垂直或水平显示,取值为“v”|“h”
  2. palette:用于设置不同级别色相的颜色变量。
  3. saturation:用于设置数据显示的颜色饱和度。

代码如下:

tips = sns.load_dataset("tips")
sns.boxplot(x='day', y='total_bill', data=tips)

输出结果:

x轴的名称为day,刻度范围是Thur ~ Sun(周四至周日),y轴的名称为total_bill,刻度范围为10 ~ 50左右。

从图中可以看出,Thur列、Fri列中大部分数据都小于30,但Thur列有5个异常值大于30、Fri列中有1个异常值大于40;Sat列中有3个大于40的异常值;Sun列中有两个大于40的异常值。


绘制提琴图

violinplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,
bw=“scott”, cut=2, scale=“area”, scale_hue=True, gridsize=100,
width=.8, inner=“box”, split=False, dodge=True, orient=None,
linewidth=None, color=None, palette=None, saturation=.75,
ax=None, **kwargs)

代码如下:

tips = sns.load_dataset("tips")
sns.violinplot(x='day', y='total_bill', data=tips)

输出结果:

由图可得,Thur列中位于5 ~ 25之间的数值较多,Fri列中位于5 ~ 30之间的数值较多,Sat列中位于5 ~ 35之间的数值较多,Sun列中位于5 ~ 40之间的数值较多。


类别内的统计估计

想要集中查看每个分类的集中趋势可以使用条形图和点图进行展示。

  1. barplot()函数:绘制条形图
  2. pointplot()函数:绘制点图。

绘制条形图

默认情况下, barplot()函数会在整个数据集上使用均值进行估计。若每个类别中有多个类别时(使用了hue参数),则条形图可以使用引导来计算估计的置信区间(样本统计量构造的总体参数的估计区间),并使用误差条来表示置信区间。

代码如下:

tips = sns.load_dataset("tips")
sns.barplot(x='day', y='total_bill', data=tips)  # 绘制条形图

输出结果:


绘制点图

该函数会用高度估计值对数据进行描述,而不是显示完整的条形,只绘制点估计和置信区间。

代码如下:

tips = sns.load_dataset("tips")
sns.pointplot(x='day', y='total_bill', data=tips)  # 绘制点图

输出结果:

Seaborn——绘制统计图形相关推荐

  1. 9.绘制统计图形——饼图

    文章目录 1.绘制原理 2.非分裂式饼图 3.绘制内嵌环形饼图 饼图是用来展示定性数据比例分布特征的统计图形.饼图主要用在进行离散型数据的比例展示.如需要展示参加硕士研究生考试的性别比例,某一年中四季 ...

  2. Python数据可视化(三)绘制统计图形大全

    3.1 柱状图 以 Python 代码的形式讲解柱状图的绘制原理,这里重点讲解 bar()函数的使用方法. 代码: import matplotlib as mpl import matplotlib ...

  3. 11.绘制统计图形——误差棒图

    文章目录 1.应用场景--定量数据的误差范围 2.带误差棒的柱状图 3.带误差棒的条形图 4.带误差棒的多数据并列柱状图 5.带误差棒的堆积柱状图 在很多科学实验中都存在测量误差或是试验误差,这是无法 ...

  4. 7.绘制统计图形——堆积折线图、间断条形图和阶梯图

    文章目录 1.用函数stackplot()绘制堆积折线图 2.用函数broken_brah()绘制间断条形图 3.用函数step()绘制阶梯图 1.用函数stackplot()绘制堆积折线图 堆积折线 ...

  5. 4.绘制统计图形——条形图

    文章目录 如果将柱状图中的柱体由垂直方向变成水平方向,柱状图就变成条形图,函数也就变成 barth(x,y,align="center",color="k",t ...

  6. Seaborn绘制11个柱状图

    本文介绍的是如何使用seaborn来绘制各种柱状图 基础柱状图 水平柱状图 标题设置 基于DataFrame绘图 hue参数设置 颜色处理 多维度处理 个人很喜欢的一个Seaborn绘制的图形: 导入 ...

  7. 【matplotlib】3-绘制统计图形

    文章目录 绘制统计图形 1.柱状图 1.1 应用场景--定性数据的分布展示 1.2 绘制原理 2.条形图 3.堆积图 3.1 堆积柱状图 3.2 堆积条形图 4.分块图 4.1 多数据并列柱状图 4. ...

  8. 如何用ggplot2绘制漂亮的统计图形

    导言 ggplot2 是由 Hadley Wickham 开发的一个功能十分强大的 R 语言绘图程序包,它能够非常轻松的画出各种好看的统计图形.关于 ggplot2 的教程有很多,Cédric Sch ...

  9. 使用python的seaborn、matplotlib、pyecharts绘制各种图形

    前言 本文前期工作是将sqlite数据库内的数据进行连接聚合查询,得到不同维度的数据并保存在本地的csv文件中,然后运用seaborn.matplotlib.pyecharts绘制各种图形 pyech ...

最新文章

  1. ASCII码对应表,ASCII码值的大小顺序
  2. Tomcat日志中文乱码问题解决
  3. Quartus11中新建工程
  4. 程序员必定会爱上的10款软件
  5. FreeBSD5.0内核 - 锁机制
  6. SearchView去除下划线
  7. php更新用户数据为空,php - 使用PHP更新数据库,而没有来自HTML表单的空值 - SO中文参考 - www.soinside.com...
  8. tcp/ip IP数据报头详解
  9. 【渝粤教育】电大中专消费者行为学_1作业 题库
  10. QDir类及其用法总结
  11. 计算机网络课后作业习题2
  12. php和python学不明白_现在自学php和python那个合适?
  13. Django 文档 -- 记录我的Django学习之旅
  14. EOS源码分析(5)账号
  15. 期刊缩写合辑【JCR+ISO】
  16. 关于正负数比较大小的问题
  17. 一键生成轮播图,轮播图插件
  18. 程序员修炼之道读后感(一)
  19. 六边形战士—雷达图实现
  20. 云通信的变迁史:从飞鸽传书到即时可达

热门文章

  1. stm32l0的停止模式怎么唤醒_Mac外接显示器的显示模式怎么设置
  2. android人脸识别的背景图_Android 图片人脸识别剪切
  3. mvn 汇编_2020年简单的早安共勉句子短信汇编58条
  4. 英特网rst服务器未在运行,技术员示范win7系统提示“英特尔(R)RST服务未在运行”的详细办法...
  5. 【转】DICOM医学图像读取涉及到的医学坐标体系
  6. 第六节:深入研究Task实例方法ContinueWith的参数TaskContinuationOptions
  7. Java设计模式、框架、架构、平台之间的关系
  8. GitHub.com上的那些东西你都知道什么意思吗?
  9. python数据库实例_Python操作MySQL数据库9个实用实例
  10. REVERSE-PRACTICE-CTFSHOW-3