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视为单一变 ...
随机推荐
- entries
let arr = [1,2,3,4,5,6,7]; for (let [index, leaflet] of arr.entries()){ console.log(index,leaflet) }
- 132pattern-Leetcode456
QUESTION: To search for a subsequence (s1,s2,s3) such that s1 < s3 < s2. INTUITION: Suppose we ...
- IDEA 2018.3.*本地启动tomcat项目无法设置Application context localhost 404
记录一个开发中遇到的坑,网上找了好久才找到一个能解决的办法,特此转载一下. 旧版的idea启动web项目,在tomcat配置环节,有设置Application content的功能.我们可以设置成&q ...
- windows 切换路径
- RocketMQ4.x本地源码部署教程
安装前提条件(推荐) 64bit OS, Linux/Unix/Mac (Windows不兼容)64bit JDK 1.8+; 快速开始 http://rocketmq.apache.org/docs ...
- maven远程debug
1.修改tomcat服务器配置 打开tomcat/bin/catalina.sh 添加参数 CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_soc ...
- c# + appium 连接设备自动化
//private static AndroidDriver<AppiumWebElement> _driver; //private static AppiumLocalService ...
- Q:Win10无法访问共享文件夹。提示此用户无法登录,因为该账户当前已被禁用
问题:当我访问同事电脑共享文件夹时,弹出如下提示框: 可以在命令提示符上ping通对方主机,但是不能访问对方文件夹 尝试解决方法(无效): 1.同时按住win+r打开运行命令框,输入gpedit.ms ...
- 1012.Django中间件以及上下文处理器
一.中间件 中间件的引入: Django中间件(Middleware)是一个轻量级.底层的"插入"系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出. d ...
- Python使用Eel和HTML开发桌面应用GUI直接用web前端的VUE+VANT来做
python的gui太难用了,唯一能配置独立前端的程序只有web.所以用web做前端,到python,完美! 环境准备 Python 3.9 Chrome浏览器(由于Eel是直接调用的Ch ...