数据分布图简介

中医上讲看病四诊法为:望闻问切。而数据分析师分析数据的过程也有点相似,我们需要望:看看数据长什么样;闻:仔细分析数据是否合理;问:针对前两步工作搜集到的问题与业务方交流;切:结合业务方反馈的结果和项目需求进行数据分析。

"望"的方法可以认为就是制作数据可视化图表的过程,而数据分布图无疑是非常能反映数据特征(用户症状)的。R语言提供了多种图表对数据分布进行描述,本文接下来将逐一讲解。

绘制基本直方图

本例选用如下测试集:

直方图的横轴为绑定变量区间分隔的取值范围,纵轴则表示变量在不同变量区间上的频数。绘制时只需将基函数的美学特征集中配置好需要分析的变量,然后创建新的直方图图层即可。R语言示例代码如下:

# 基函数
ggplot(faithful, aes(x = waiting)) +
# 直方图函数:binwidth设置组距
geom_histogram(binwidth = 5, fill = "lightblue", colour = "black")

运行结果:

基于分组的直方图

本例选用如下测试集:

直方图的分组图和本系列前面一些博文中讲的一些分组图不同,它不能进行水平方向的堆积 - 这样看不出频数变化趋势;也不能进行垂直方向的堆积 - 这样同样看不出趋势。这里采用一种新的堆积方法:重叠堆积,R语言实现代码如下:

# 预处理:将smoke变量转换为因子类型
birthwt$smoke = factor(birthwt$smoke) # 基函数:x设置目标变量
ggplot(birthwt, aes(x = bwt, fill = smoke)) +
# 直方图函数:position设置堆积模式为重叠
geom_histogram(position = "identity", alpha = 0.4)

运行结果:

也可以采用分面的方法,R语言实现代码如下:

# 预处理1:将smoke变量转换为因子类型
birthwt$smoke = factor(birthwt$smoke)
# 预处理2:改变因子水平名称
birthwt$smoke = revalue(birthwt$smoke, c("0" = "No Smoke", "1" = "Smoke")) # 基函数
ggplot(birthwt, aes(x = bwt)) +
# 直方图函数
geom_histogram(fill = "lightblue", colour = "black") +
# 分面函数:纵向分面
facet_grid(smoke ~ .)

运行结果:

绘制密度曲线

本例选用如下测试集:

密度曲线表达的意思和直方图很相似,因此密度曲线的绘制方法和直方图也几乎是相同的。区别仅在于密度曲线的横轴要绑定到连续型变量,另外绘制函数的名字不同。R语言示例代码如下:

# 预处理:将smoke变量转换为因子类型
birthwt$smoke = factor(birthwt$smoke) # 基函数:x设置目标变量,fill设置填充色
ggplot(birthwt, aes(x = bwt, fill = smoke)) +
# 密度曲线函数:alpha设置填充色透明度
geom_density(alpha = 0.3)

运行结果:

绘制基本箱线图

本例选用如下测试集:

箱线图是一种常用数据分布图,下图表示了这种图中各元素的意义:

绘制方法是在基函数中将变量分组绑定到横轴,变量本身绑定到纵轴。此外,为了美观也可以将分组绑定到fill变量并设置调色板。R语言示例代码如下:

# 基函数
ggplot(birthwt, aes(x = factor(race), y = bwt, fill = factor(race))) +
# 箱线图函数
geom_boxplot() +
# 颜色标尺
scale_fill_brewer(palette = "Pastel2")

运行结果:

往箱线图添加槽口和均值

在上一节绘制的基本箱线图之上,还能进一步绘制以展示更多信息。

其中最常见的是为箱子添加槽口,它能更清晰的表示中位数的位置。R语言实现代码如下:

# 基函数
ggplot(birthwt, aes(x = factor(race), y = bwt, fill = factor(race))) +
# 箱线图函数
geom_boxplot(notch = TRUE) +
# 颜色标尺
scale_fill_brewer(palette = "Pastel2")

运行结果:

通过stat_summary()函数,还可以在箱线图中标记均值点。R语言实现代码如下:

# 基函数
ggplot(birthwt, aes(x = factor(race), y = bwt, fill = factor(race))) +
# 箱线图函数
geom_boxplot(notch = TRUE) +
# 颜色标尺
scale_fill_brewer(palette = "Pastel2")

运行结果:

绘制2D等高线

本例选用如下测试集:

绘制2D等高线主要是调用stat_density()函数。这个函数会给出一个基于数据的二维核密度估计,然后我们可基于这个估计值来判断各样本点的"等高"性。接下来首先给出各数据点及等高线的绘制方法,R语言实现代码如下:

# 基函数
ggplot(faithful, aes(x = eruptions, y = waiting)) +
# 散点图函数
geom_point() +
# 密度图函数
stat_density2d()

运行结果:

        也可以通过设置密度函数美学特征集中的colour参数来给不同密度的等高线着色,R语言实现代码如下:

# 基函数
ggplot(faithful, aes(x = eruptions, y = waiting)) +
# 密度图函数:colour设置等高线颜色
stat_density2d(aes(colour = ..level..))

运行结果:

绘制2D密度图

本例选用如下测试集:

等高线图也是密度图的一种,因此绘制密度图和等高线图用的是同一个函数:stat_density(),只是它们传入的参数不同。首先绘制经典栅格密度图,R语言实现代码如下:

# 基函数
ggplot(faithful, aes(x = eruptions, y = waiting)) +
# 密度图函数:fill设置填充颜色数据为密度,geom设置绘制栅格图
stat_density2d(aes(fill = ..density..), geom = "raster", contour = FALSE)

运行结果:

也可以将密度变量映射到透明度来渲染,R语言实现代码如下:

ggplot(faithful, aes(x = eruptions, y = waiting)) +
# 散点图函数
geom_point() +
# 密度图函数:alpha设置填充透明度数据为密度,geom设置绘制栅格图
stat_density2d(aes(alpha = ..density..), geom = "raster", contour = FALSE)

运行结果:

第六篇:R语言数据可视化之数据分布图(直方图、密度曲线、箱线图、等高线、2D密度图)的更多相关文章

  1. 第二篇:R语言数据可视化之数据塑形技术

    前言 绘制统计图形时,半数以上的时间会花在调用绘图命令之前的数据塑型操作上.因为在把数据送进绘图函数前,还得将数据框转换为适当格式才行. 本文将给出使用R语言进行数据塑型的一些基本的技巧,更多技术细节 ...

  2. R语言中的横向数据合并merge及纵向数据合并rbind的使用

    R语言中的横向数据合并merge及纵向数据合并rbind的使用 我们经常会遇到两个数据框拥有相同的时间或观测值,但这些列却不尽相同.处理的办法就是使用merge(x, y ,by.x = ,by.y ...

  3. R语言系列:生成数据

    R语言系列:生成数据 (2014-05-04 17:41:57) 转载▼ 标签: r语言 教育 分类: 生物信息 生成规则数据1.使用“:“,如x=1:10,注意该方法既可以递增也可以递减,如y=10 ...

  4. 用R语言实现对不平衡数据的四种处理方法

    https://www.weixin765.com/doc/gmlxlfqf.html 在对不平衡的分类数据集进行建模时,机器学**算法可能并不稳定,其预测结果甚至可能是有偏的,而预测精度此时也变得带 ...

  5. R语言︱噪声数据处理、数据分组——分箱法(离散化、等级化)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 分箱法在实际案例操作过程中较为常见,能够将一些 ...

  6. R语言数据集合并、数据增减、不等长合并

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 数据选取与简单操作: which 返回一个向量 ...

  7. R语言读取matlab中数据

    1. 在matlab中将数据保存到*.mat 文件夹 save("data.mat","data","label")#将data和label ...

  8. R语言学习笔记(数据预处理)

    setwd("d:/r/r-data/")data=read.table("salary.txt",header=T)attach(data)mean(Sala ...

  9. R语言:导入导出数据

    主要学习如何把几种常用的数据格式导入到R中进行处理,并简单介绍如何把R中的数据保存为R数据格式和csv文件. 1.保存和加载R的数据(与R.data的交互:save()函数和load()函数) a & ...

随机推荐

  1. js+css3 动画数字累加

    css: .kk{ width:100px; height:100px; display:inline-block; color:red; text-align:center; position: r ...

  2. nginx——rewrite模块

    1.什么是Nginx的Rewrite规则? Rewrite主要的功能就是实现URL的重写,Nginx的Rewrite规则采用PCRE(Perl Compatible Regular Expressio ...

  3. EasyUI篇のico

    所有图标位置: /themes/icons css引用位置: /themes/icon.css 可自行添加16*16的小图片放在icons中,icon.css代码添加即可 例如: .icon-logo ...

  4. php开发环境安装配置(1)

    个人记录高手请勿喷! 下载xampp我这是个中文版的可以自己搜索下载安装别的版本也行. 双击下载的xampp会提示路径相当于解压到指定的路径 到对应路径去可看到如下: 打开 2.配置: 成功之后会如下 ...

  5. PHP与MYSQL配合完成IP的存取

    如何存储IP 程序设计要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中不可忽略的重要部分,巧存IP地址可以一定程度提升性能. 利用函数算法处理 MySQL没有直接提供IP类型字段,但有 ...

  6. hdu 5113 Black And White

    http://acm.hdu.edu.cn/showproblem.php?pid=5113 题意:给你n*m的格子,然后在每个格子内涂色,相邻格子不能同色,然后给你每个颜色涂的格子的固定个数,然后可 ...

  7. ios入门之c语言篇——基本函数——5——素数判断

    参数返回值解析: 参数: m:int,需要判断的值: 返回值: 0:非素数 1:素数 函数解析: 注意:函数没有对输入进行判断,请自己屏蔽非法输入 int prime(int m) { int tem ...

  8. Automated Telephone Exchange

    Time Limit: 3000MS Memory limit: 65536K 题目描述In St Petersburg phone numbers are formatted as “XXX–XX– ...

  9. 几个国外FMX网站 good

    FireMonkey X –  Amazing overview of FireMonkey FMX Feeds – All your FireMonkey news in one place FMX ...

  10. android-wear开发之定义布局

    Android Wear使用跟手机一样的布局技术,但需要对特定情况进行设计.不要把手机的UI直接照搬过来.更多可查看:Android Wear Design Guidelines 当创建android ...