ggplot2图形可视化应用集锦
数据可视化就是将我们从数据中探索的信息与图形要素对应起来的过程。数据可视化,先要理解数据,再去掌握可视化的方法,这样才能实现高效的数据可视化。数据可视化技术的基本思想,是将数据库中每一个数据项作为单个图元元素表示,大量的数据集构成数据图像,同时将数据的各个属性值以多维数据的形式表示,可以从不同的维度观察数据,从而对数据进行更深入的观察和分析。
ggplot2 是最流行的 R 可视化包,ggplot2 基于图层化语法。图形是一层一层的图层叠加而成,先进的绘图理念、优雅的语法代码、美观大方的生成图形,让ggplot2 迅速走红。ggplot2 几乎是 R 语言的代名词。ggplot2将数据、数据到图形要素的映射、以及和数据无关的图形要素绘制分离,可让ggplot2的使用者能清楚分明的感受到一张数据分析图真正的组成部分,有针对性的进行开发,调整。
一、可视化的作用
可视化:可视化将数据以一定的变换和视觉编码原则映射为可视化视图。用户对可视化的感知和理解通过人的视觉通道完成。
可视化编码:可视化编码 (visual encoding) 是可视化的核心内容,是将数据信息映射成可视化元素的技术,其通常具有表达直观、易于理解和记忆等特性。可视编码由两部分组成: 标记和视觉通道。
标记:代表数据属性的分类,通常是一些几何图形元素,例如:点、线、面、体。
视觉通道:表示人眼所能看到的各种元素的属性,包括大小、形状、颜色等,往往用来展示属性的定量信息。

视觉通道有:位置、长度、角度、方向、面积、体积、饱和度、色相、纹理、形状。

RGB 色彩空间:采用笛卡尔坐标系定义颜色,三个轴分别对应红色 (R)、绿色 (G) 和蓝色 (B) 三个分量。 RGB 色彩空间是迄今为止使用最广泛的色彩空间,几乎所有的电子显示设备都使用 RGB色彩空间。
1.1类别比较

1.2 数值关系

1.3 数据分布

1.4 局部与整体

二、ggplot2包
"一张统计图形就是从数据到几何对象(geometric object, 缩写为geom, 包括点、线、条形等)的图形属性(aesthetic attributes, 缩写为aes, 包括颜色、形状、大小等)的一个映射。此外, 图形中还可能包含数据的统计变换(statistical transformation, 缩写为stats), 最后绘制在某个特定的坐标系(coordinate system, 缩写为coord)中, 而分面(facet, 指将绘图窗口划分为若干个子窗口)则可以用来生成数据中不同子集的图形。" ----- Hadley Wickham
函数调用方法
ggplot(data = <DATA>,
mapping = aes(<MAPPINGS>)) +
<GEOM_FUNCTION>(
mapping = aes(<MAPPINGS>),
stat = <STAT>,
position = <POSITION>) +
<SCALE_FUNCTION> +
<COORDINATE_FUNCTION> +
<FACET_FUNCTION> +
<THEME_FUNCTION>
ggplot 的语法包括 10 个部件:数据(data);映射(mapping);几何对象(geom);标度(scale);统计变换(stats);坐标系(coord);位置调整(Position adjustments);分面(facet);主题(theme);输出(output)。10 个部件中,前3个是必须的,其它部件 ggplot2 会自动帮你做好它认为"最优"的配置,当然也都可以手动定制。

ggplot2是由Hadley Wickham创建的一个十分强大的可视化R包,按照其绘图理念,Plot(图)= data(数据集)+ Aesthetics(美学映射)+ Geometry(几何对象)。本文将从ggplot2的这几个方面【映射(Mapping);几何对象(Geometric);统计变换(Statistics);分面(Facet)】介绍这个强大的R可视化包。
2.1 数据集(data)
这里用于绘制图形的数据,采用经典的mtcars和diamonds数据集为例来画图。
#R包和数据准备
library(ggplot2)
data(diamonds)
data(mtcars)
2.2 映射(Mapping)
映射:aes()函数是ggplot2中的映射函数, 所谓的映射即为数据集中的数据关联到相应的图形属性过程中一种对应关系, 图形的颜色,形状,分组等都可以通过通过数据集中的变量映射。使用diamonds的数据子集作为绘图数据,克拉(carat)数为X轴变量,价格(price)为Y轴变量。
ggplot(diamonds)+geom_histogram(aes(x=price, fill=cut))

注:ggplot2支持图层,可以把不同的图层中共用的映射提供给ggplot函数,而某一几何对象才需要的映射参数提供给geom_xxx函数。
2.3 几何对象(Geometric)
几何对象代表我们在图中实际看到的图形元素,如点、线、多边形等。数据与映射部分介绍了ggplot函数执行各种属性映射,只需要添加不同的几何对象图层,即可绘制出相应的图形,如geom_histogram用于直方图,geom_bar用于画柱状图,geom_boxplot用于画箱式图等。
通过映射和几何对象就可以将数据集中的变量数值变成几何图形以及几何图形的各种图形元素。
注:每一种几何对象所能涉及的aes()类型有区别,在绘制对应对象的时候,要注意选择正确的映射方式,以下仅供参考:
ls("package:ggplot2", pattern="^geom_.+")
[1] "geom_abline" "geom_area" "geom_bar" "geom_bin_2d"
[5] "geom_bin2d" "geom_blank" "geom_boxplot" "geom_col"
[9] "geom_contour" "geom_contour_filled" "geom_count" "geom_crossbar"
[13] "geom_curve" "geom_density" "geom_density_2d" "geom_density_2d_filled"
[17] "geom_density2d" "geom_density2d_filled" "geom_dotplot" "geom_errorbar"
[21] "geom_errorbarh" "geom_freqpoly" "geom_function" "geom_hex"
[25] "geom_histogram" "geom_hline" "geom_jitter" "geom_label"
[29] "geom_line" "geom_linerange" "geom_map" "geom_path"
[33] "geom_point" "geom_pointrange" "geom_polygon" "geom_qq"
[37] "geom_qq_line" "geom_quantile" "geom_raster" "geom_rect"
[41] "geom_ribbon" "geom_rug" "geom_segment" "geom_sf"
[45] "geom_sf_label" "geom_sf_text" "geom_smooth" "geom_spoke"
[49] "geom_step" "geom_text" "geom_tile" "geom_violin"
[53] "geom_vline"
ggplot(diamonds)+geom_bar(aes(x=clarity, fill=cut))

2.4 统计变换(Statistics)
ggplot2提供了多种统计变换方式,此处介绍两种较常用的。
stat_summary
要求数据源的y能够被分组,每组不止一个元素, 或增加一个分组映射,即aes(x= , y = , group = )
library(Hmisc)
g <- ggplot(mtcars,aes(cyl, mpg)) + geom_point()
#mean对mtcars中的列变量进行运算,返回均值
g + stat_summary(fun.y = "mean", color = "red", size = 2)

stat_smooth
对原始数据进行某种统计变换计算,然后在图上表示出来,例如对散点图上加一条回归线。
method 表示指定平滑曲线的统计函数,如lm线性回归, glm广义线性回归, loess多项式回归, gam广义相加模型(mgcv包), rlm稳健回归(MASS包)
ggplot(mpg, aes(displ, hwy)) +geom_point() +stat_smooth(method = lm, se = TRUE)

注:以下为ggplot2提供的其他统计变换方式,也可以自己写函数基于原始数据进行计算。
ls("package:ggplot2", pattern="^stat_.+")
[1] "stat_bin" "stat_bin_2d" "stat_bin_hex" "stat_bin2d"
[5] "stat_binhex" "stat_boxplot" "stat_contour" "stat_contour_filled"
[9] "stat_count" "stat_density" "stat_density_2d" "stat_density_2d_filled"
[13] "stat_density2d" "stat_density2d_filled" "stat_ecdf" "stat_ellipse"
[17] "stat_function" "stat_identity" "stat_qq" "stat_qq_line"
[21] "stat_quantile" "stat_sf" "stat_sf_coordinates" "stat_smooth"
[25] "stat_spoke" "stat_sum" "stat_summary" "stat_summary_2d"
[29] "stat_summary_bin" "stat_summary_hex" "stat_summary2d" "stat_unique"
[33] "stat_ydensity"
2.5 分面(Facet)
分面设置在ggplot2应该也是要经常用到的一项画图内容,在数据对比以及分类显示上有着极为重要的作用。facet_wrap 和 facet_grid是两个经常要用到的分面函数。facet_wrap:基于一个因子进行设置,形式为:变量(单元格)
p<-ggplot(mtcars,aes(mpg,hp))+geom_point()
p+facet_wrap(~cyl)

在上面的这些例子中,我们接触到了ggplot2作图过程中最重要的三个概念:映射、图层和几何对象。aes()函数是ggplot2中的映射函数, 所谓的映射即为数据集中的数据关联到相应的图形属性过程中一种对应关系;ggplot2中图层的概念和PS中图层的概念很像, 可以这样理解ggplot2中的图层:每个图层可以代表一个图形组件, 这些组件以图层的方式叠加在一起构成一个绘图的整体, 在每个图层中的图形组件又可以分别设定数据、映射或其他相关参数, 因此组件之间又是具有相对独立性的。几何对象执行着图层的实际渲染, 控制着生成的图像类型。
三、ggplot2函数概览


四、总结
图层设置是ggplot2做图的关键。通过查看ggplot图形对象的数据结构我们了解到一个图层至少包含几何类型、统计类型和位置调整三方面的东西,当然数据和映射得首先建立。如果把ggplot2当成是太极,这些内容的设置就相当于太极的招式,有固定方法;对招式理解透彻后以随意对它们进行组合,并融合数据层面的一些设置(如分面、美学属性映射等)创造出用于解决问题的完美图形。刚开始接触学习ggplot2的时候,其实是非常抵触,觉得非常非常难的,但随着一张张图片跃然于屏幕之上,心中的抵触满满消失,取而代之的甚至多出了一丝喜爱。而这丝喜爱愈酿愈醇厚,愈酿愈香甜。希望大家能够爱上R这门编程语言,享受使用ggplot2绘图的乐趣。
参考文献
1.(R语言学习ggplot2绘制统计图形包全面详解)[https://www.jb51.net/article/227443.htm]
2.(R语言可视化及作图5--ggplot2基本要素、几何对象和数据转换函数汇总)[https://www.jianshu.com/p/fe83dfe15718]
3.(50个ggplot2可视化案例)[https://blog.csdn.net/qazplm12_3/article/details/109760060]
4.R语言可视化【ggplot2】
ggplot2图形可视化应用集锦的更多相关文章
- E-Form++图形可视化源码库新增同BCGSoft的Ribbon结合示例
2015年11月20日,来自UCanCode E-Form++源码库的开发团队消息,E-Form++正式提供了同BCGSoft的Ribbon界面风格相结合的示例,如下图: 下载此示例请访问: http ...
- WHY数学图形可视化工具(开源)
WHY数学图形可视化工具 软件下载地址:http://files.cnblogs.com/WhyEngine/WhyMathGraph.zip 源码下载地址: http://pan.baidu.com ...
- Cloudcraft: 云架构图形可视化(智能AWS图表)
Cloudcraft: 云架构图形可视化(智能AWS图表) 2016.09.11 官方网站: https://cloudcraft.co/ Cloudcraft是一个Web应用,用图形表示各种AWS服 ...
- 安装doxygen(一个自动文档生成工具)+Graphviz图形可视化软件
参考文章: http://www.fmddlmyy.cn/text21.html http://www.cnblogs.com/duguguiyu/archive/2008/06/29/1231852 ...
- R:ggplot2数据可视化——进阶(1)
,分为三个部分,此篇为Part1,推荐学习一些基础知识后阅读~ Part 1: Introduction to ggplot2, 覆盖构建简单图表并进行修饰的基础知识 Part 2: Customiz ...
- R:ggplot2数据可视化——进阶(3)
Part 3: Top 50 ggplot2 Visualizations - The Master List, 结合进阶1.2内容构建图形 有效的图形是: 不扭曲事实 传递正确的信息 简洁优雅 美观 ...
- R:ggplot2数据可视化——基础知识
1 安装 # 获取ggplot2 最容易的就是下载整个tidyverse: install.packages("tidyverse") # 也可以选择只下载ggplot2: ins ...
- R:ggplot2数据可视化——进阶(2)
Part 2: Customizing the Look and Feel, 更高级的自定义化,比如说操作图例.注记.多图布局等 # Setup options(scipen=999) librar ...
- R语言与医学统计图形-【27】ggplot2图形组合、字体、保存
ggplot2绘图系统--图形组合.字体选择.保存输出 1.图形组合 一页多图在基础包中利用par和layout函数来切分画布. ggplot2是先铺好网格背景,再进行绘图,所以要通过切分网格背景来实 ...
- R语言与医学统计图形-【10】ggplot2图形映射
ggplot2绘图系统--图形映射 颜色的映射. #aes中映射变量 ggplot()+geom_point(aes(x=carat,y=price,color='blue'),#color视为单一变 ...
随机推荐
- pnn模型 待整理
https://blog.csdn.net/qq_18293213/article/details/90262378?spm=1001.2101.3001.6650.5&utm_medium= ...
- idea 部署项目到 docker 运行
1.在远程服务器上开启 docker 远程连接 $vim /usr/lib/systemd/system/docker.service # ExecStart=/usr/bin/dockerd -H ...
- pads:数据格式不正确,网络必须包含一个以上管脚
1,如果已经有pcb封装,则在pads logic软件里面-元件编辑器-重新做封装,在--编辑电参数--里面匹配对应pcb封装, 2,点击-工具--,--从库中更新--,更新一下,之后导入pcb la ...
- 排查占用cpu最高线程
- 如何在Windows 10上使用VS2019 编译C
一.安装VS 2019 首先VS官网上下载免费的VS2019 community.我们的目的是在Windows上使用该软件编译C,如下图所示,把使用C++的桌面开发打上勾 二.创建.C 项目 1.打开 ...
- 对Java要学东西的认识 (一点点javascript见解)
JavaScript是一种脚本语言,它采用小程序段的方式实现编程.像其它脚本语言一样,JavaScript同样已是一种解释性语言,它提供了一个易的开发过程.它的基本结构形式与C.C++.VB十分类似. ...
- Spring Boot统一日志框架
一.日志框架的选择 市面上常见的日志框架有很多,它们可以被分为两类:日志门面(日志抽象层)和日志实现,如下表. 日志分类 描述 举例 日志门面(日志抽象层) 为 Java 日志访问提供一套标准和规范 ...
- c++ProgrammingConcept
本文做为总章简单介绍自己的c++学习过程(学习书籍:c++编程思想) 第三章:c++中的c(part1) 第三章:c++中的c(part2)
- 解决Tomcat 启动,http://localhost:8080无法访问 问题
注意:1:tomact能正常启动 2 : 通过startup启动后可以正常访问8080界面: 3: 通过eclipse启动后无法正常访问8080界面: Tomcat能在eclipse里面能正常启动,但 ...
- Halcon代码导出到.net FrameWork/WPF
1. 应用背景 在工业项目中,往往需要使用机器视觉结合人机界面开发特定的,面向工艺的项目.机器视觉中,Halcon无疑是功能强大的,能快速应用到项目的视觉产品,而WPF则是解决人机界面的利器.因此了解 ...