3 直方图Histogramplot

(代码下载)
直方图能够准确表现数据的分布,在seaborn中使用distplot函数制作直方图,该章节主要内容有:

  1. 基本直方图的绘制 Basic histogram
  2. 数据分布与密度信息显示 Control rug and density on seaborn histogram
  3. 带箱形图的直方图 Histogram with a boxplot on top
  4. 多个变量的直方图 Histogram with several variables
  5. 边际图 Marginal plot
#调用seaborn
import seaborn as sns
#调用seaborn自带数据集
df = sns.load_dataset('iris')
#显示数据集
df.head()
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa

1. 基本直方图的绘制 Basic histogram

  • 绘制默认直方图 Make default histogram
  • bin的数量设置 Control the number of bins
  • 垂直直方图 Vertical Histogram
# 绘制默认直方图 Make default histogram
# displot默认绘制概率密度函数曲线,及kde=True
# 下图纵坐标为在横坐标区域内分布的概率,曲线表示概率密度函数,在区间上积分值为1
sns.distplot( df["sepal_length"]);
C:\ProgramData\Anaconda3\lib\site-packages\scipy\stats\stats.py:1713: FutureWarning: Using a non-tuple sequence for multidimensional indexing is deprecated; use `arr[tuple(seq)]` instead of `arr[seq]`. In the future this will be interpreted as an array index, `arr[np.array(seq)]`, which will result either in an error or a different result.
return np.add.reduce(sorted[indexer] * weights, axis=axis) / sumval

# bin的数量设置 Control the number of bins
# bin控制直方图的竖直的长方形的数量
sns.distplot( df["sepal_length"], bins=20);

# 垂直直方图 Vertical Histogram
# vertical=True设置直方图垂直
sns.distplot( df["sepal_length"] , color="skyblue", vertical=True);

2. 数据分布与密度信息显示 Control rug and density on seaborn histogram

  • 仅显示直方图 Hist only
  • 显示带数据分布和密度的直方图 Hist + Rug + kernel density
  • 密度分布曲线参数修改 To change parameters of density distribution
# 仅显示直方图  Hist only
# hist :控制是否显示条形图
# kde :控制是否显示核密度估计图
# rug :控制是否显示观测的小细条(边际毛毯)
sns.distplot( a=df["sepal_length"], hist=True, kde=False, rug=False );

# 显示带数据分布和密度的直方图 Hist + Rug + kernel density
sns.distplot( a=df["sepal_length"], hist=True, kde=True, rug=True );

# 密度分布曲线参数修改 To change parameters of density distribution
sns.distplot( a=df["sepal_length"], kde=True,kde_kws={"color": "g", "alpha":0.3, "linewidth": 5, "shade":True });

3. 带箱形图的直方图 Histogram with a boxplot on top

# 此图表主要基于seaborn,但也需要matplotlib,将图形窗口分成两部分
# 导入matplotlib
import matplotlib.pyplot as plt
# Cut the window in 2 parts 将窗口分为两部分
# sharex共享x轴,图像分为上下两部分,上面部分ax_box占比0.15,下面部分ax_hist占比0.85
f, (ax_box, ax_hist) = plt.subplots(2, sharex=True, gridspec_kw={"height_ratios": (.15, .85)}) # Add a graph in each part 绘制两种不同的图像
sns.boxplot(df["sepal_length"], ax=ax_box)
sns.distplot(df["sepal_length"], ax=ax_hist)
# Remove x axis name for the boxplot 不显示箱形图的横坐标
ax_box.set(xlabel='');

4. 多个变量的直方图 Histogram with several variables

  • 同轴绘制 distributions together
  • 多窗口绘制 several parts
# 同轴绘制 distributions together
# 如果您有多个变量并且想要将它们的分布可视化在一起,您有两个选项:在同一轴上绘制或者将窗口分成几个部分。
# 如果你没有太多变量,并且它们没有重叠,那么同一轴上绘制就更好了
import matplotlib.pyplot as plt
sns.distplot( df["sepal_length"] , color="skyblue", label="Sepal Length");
sns.distplot( df["sepal_width"] , color="red", label="Sepal Width");
plt.legend()
<matplotlib.legend.Legend at 0x1f910164f28>

# 多窗口绘制 several parts
import matplotlib.pyplot as plt
# plot 通过matplotlib将图像分为四部分,并且共享x轴
f, axes = plt.subplots(2, 2, figsize=(7, 7), sharex=True)
# 设定坐标轴位置
sns.distplot( df["sepal_length"] , color="skyblue", ax=axes[0, 0]);
sns.distplot( df["sepal_width"] , color="olive", ax=axes[0, 1]);
sns.distplot( df["petal_length"] , color="gold", ax=axes[1, 0]);
sns.distplot( df["petal_width"] , color="teal", ax=axes[1, 1]);

5. 边际图 Marginal plot

  • 边界散点图 scatter
  • 边界回归图 reg
  • 边界残差图 resid
  • 边界核密度图 kde
  • 边界六角图 hex
# 边际图能够很好显示两个数值变量之间的关系。
# 中央图表显示其相关性。它通常是散点图,hexbin图,2D直方图或2D密度图。
# 边缘图通常在顶部和右侧,使用直方图或密度图显示2个变量的分布。
# 边际图通过jointplot绘制,主要类型参数为kind
# Custom the inside plot: options are: “scatter” | “reg” | “resid” | “kde” | “hex”
# 边际散点图 中间是散点图,边界是直方图
sns.jointplot(x=df["sepal_length"], y=df["sepal_width"], kind='scatter');

# 边际回归图 中间是带回归方程的散点图,边界是带密度分布的直方图
sns.jointplot(x=df["sepal_length"], y=df["sepal_width"], kind='reg');

# 边际残差图 中间是带回归方程的散点图,边界是带密度分布的直方图
sns.jointplot(x=df["sepal_length"], y=df["sepal_width"], kind='resid');

# 边界核密度估计图
sns.jointplot(x=df["sepal_length"], y=df["sepal_width"], kind='kde');

# 边界六角图
sns.jointplot(x=df["sepal_length"], y=df["sepal_width"], kind='hex');

[seaborn] seaborn学习笔记3-直方图Histogramplot的更多相关文章

  1. [seaborn] seaborn学习笔记0-seaborn学习笔记章节

    seaborn学习笔记章节 seaborn是一个基于matplotlib的Python数据可视化库.seaborn是matplotlib的高级封装,可以绘制有吸引力且信息丰富的统计图形.相对于matp ...

  2. opencv学习笔记(六)直方图比较图片相似度

    opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...

  3. C#数字图像处理算法学习笔记(二)--点运算与直方图

    C#数字图像处理算法学习笔记(二)--点运算与直方图 在数字图像处理中,点运算是一种简单而重要的技术.点运算只是根据对象的像素的输入灰度值来决定像素的输出灰度值的图像处理运算.它有时也被称为对比度增强 ...

  4. OpenCV学习笔记(十) 直方图操作

    直方图计算 直方图可以统计的不仅仅是颜色灰度, 它可以统计任何图像特征 (如 梯度, 方向等等).直方图的一些具体细节: dims: 需要统计的特征的数目, 在上例中, dims = 1 因为我们仅仅 ...

  5. python数据分析入门学习笔记

    学习利用python进行数据分析的笔记&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我一边学习一边完善~ 前言:各种和数据分 ...

  6. 学习笔记之Data Visualization

    Data visualization - Wikipedia https://en.wikipedia.org/wiki/Data_visualization Data visualization o ...

  7. 学习笔记之Data Science

    Data science - Wikipedia https://en.wikipedia.org/wiki/Data_science Data science, also known as data ...

  8. python数据分析入门学习笔记儿

    学习利用python进行数据分析的笔记儿&下星期二内部交流会要讲的内容,一并分享给大家.博主粗心大意,有什么不对的地方欢迎指正~还有许多尚待完善的地方,待我一边学习一边完善~ 前言:各种和数据 ...

  9. opencv学习笔记(七)SVM+HOG

    opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...

随机推荐

  1. 代码随想录第七天| 454.四数相加II、383. 赎金信 、15. 三数之和 、18. 四数之和

    第一题454.四数相加II 给你四个整数数组 nums1.nums2.nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, ...

  2. 测试开发HTTP请求过程(一)

    测试开发HTTP请求过程 HTTP请求过程: 首先要熟悉http请求过程: 1,服务端建立socket监听 2,客户端发送http请求 3,客户端与服务端建立socket连接 4,客户端------t ...

  3. golang中经常会犯的一些错误

    0.1.索引 https://waterflow.link/articles/1664080524986 1.未知的枚举值 我们现在定义一个类型是unit32的Status,他可以作为枚举类型,我们定 ...

  4. 你所不知道的 vscode,汇集历史版本中你可能不知道的新特性

    壹 ❀ 引 vscode可以毫不夸张的说是大部分前端同学吃饭的工具(webstorm除外),随着时间的推移vscode其实也在不断推出了各种新功能新特性,但vscode并不会默认就实装这些新功能,我相 ...

  5. 基于SqlSugar的开发框架循序渐进介绍(20)-- 在基于UniApp+Vue的移动端实现多条件查询的处理

    在做一些常规应用的时候,我们往往需要确定条件的内容,以便在后台进行区分的进行精确查询,在移动端,由于受限于屏幕界面的情况,一般会对多个指定的条件进行模糊的搜索,而这个搜索的处理,也是和前者强类型的条件 ...

  6. linux下搭建oh-my-zsh环境

    目标:因为用习惯了zsh的shell环境,所以习惯在服务器上也搭建zsh环境,但是每次搭建都需要Google每一步骤,感觉很麻烦,所以决定记录一下,免得一次次查 1. 安装zsh zsh是一款shel ...

  7. Golang 实现时间戳和时间的转化

    何为时间戳: 时间戳是使用数字签名技术产生的数据,签名的对象包括了原始文件信息.签名参数.签名时间等信息.时间戳系统用来产生和管理时间戳,对签名对象进行数字签名产生时间戳,以证明原始文件在签名时间之前 ...

  8. Git创建、diff代码、回退版本、撤回代码,学废了吗

    .eye-care { background-color: rgba(199, 237, 204, 1); padding: 10px } .head-box { display: flex } .t ...

  9. 【题解】CF45I TCMCF+++

    题面传送门 题目描述 有 \(n\) 个数 \(a_i\) 请你从中至少选出一个数,使它们的乘积最大 解决思路 对于正数,对答案一定有贡献(正数越乘越大),所以输入正数时直接输出即可. 对于负数,如果 ...

  10. 2022春每日一题:Day 27

    题目:友好城市 分析一下可以转化为:选取最多的点对,使得点对之间连线没有交点,没有交点说明什么,假设选定第i组,则对于任意的j,一定满足a[i].l<a[j].l && a[i] ...