原文:R语言 可视化之三大绘图系统概述:base、lattice和ggplot2 | 第7讲

原创: 拴小林 数据驱动实践 1周前

数据可视化是数据分析过程中探索性分析的一部分内容,可以直观展示数据集数据所具有的的特征和关联关系等。R语言不仅提供了基本的可视化系统graphics包,简单的图+修饰,例如:plot、 hist(条形图)、 boxplot(箱图)、 points 、 lines、 text、title 、axis(坐标轴)等;还提供了更加高级的图形系统lattice和ggplot2.base基本图形系统相关内容可参照:《R语言 图形初阶:hist、plot和图形布局layout | 第6讲》,作为R语言图形绘制的入门一节。后续将分别就lattice和ggplot2可视化绘图系统进行简要介绍。

目录

引言

1 Lattice绘图系统

1.1 lattice常见函数集表达式对照表

1.2 lattice绘图系统相关参数对照表

1.3 面板函数

1.4 图形参数

1.5 页面布局

2 ggplot2绘图系统

ggplot2初识

更多下期详解

引言

不同类型变量常用的图表

连续数值变量

  • 一个数值变量可以用:柱状图,点图,箱图
  • 两个数值变量可以用:散点图

分类变量

  • 一个分类变量的可视化:频率表,条形图
  • 两个分类变量的可视化:关联表,相对频率表,分段条形图
  • 一个分类变量一个数值变量:分类箱图、条形图

1 Lattice绘图系统

特点:一次成图;适用于关系变量间的交互:在变量z的不同水平,变量y如何随变量x变化。常见lattice包函数有xyplot、barplot、histogram等,格式 xyplot(y~x | f *g ,data);panel函数,用于控制每个面板内的绘图。

xyplot示例1:xyplot(y~x ,data)

> library(lattice)
> data(airquality)
> xyplot(Temp~Ozone,data=airquality) #简单xyplot示例

xyplot示例2:xyplot(y~x | f ,data)

xyplot(Temp~Ozone|factor(Month),data=airquality)
#在变量factor(Month)的不同水平,变量Temp如何随变量Ozone变化。

1.1 lattice常见函数集表达式对照表

图形类型 函数 表达式示例

三维等高线图 contourplot() z ~ x*y

三维水平图 levelplot() z ~ y*x

三维散点图 cloud() z ~ x*y|A

三维线框图 wireframe() z ~ y*x

条形图 barchart() x ~ A或A ~ x

箱线图 bwplot() x ~ A或A ~ x

点图 dotplot() ~ x | A

直方图 histogram() ~ x

核密度图 densityplot() ~ x | A*B

平行坐标图 parallel() dataframe

散点图 xyplot() y ~ x | A

散点图矩阵 splom() dataframe

带状图 stripplot() A ~ x或x ~ A

高级绘图中表达式的通常格式:y ~ x | A * B 竖线左边的变量称为主要变量,右边称为条件变量。主要变量即为图形的两个坐标轴,其中y在纵轴上,x在横轴上。变形:单变量绘图,用 ~ x 即可;三维绘图,用z ~ x*y;多变量绘图,使用数据框代替y ~ x即可。

1.条件变量的用法~ x | A表示因子A各个水平下数值型变量x的分布情况;y ~ x | A * B表示因子A和B各个水平组合下数值型变量x和y之间的关系。A ~ x表示A在纵轴上展示,x在横轴上展示。

条件变量为连续型变量时,要先将其转换成离散型变量。一种方法是使用cut()函数,另外可以使用lattice包中的函数将连续型变量转化为瓦块(shingle)数据结构,这样,连续型变量可以被分割为一系列(可能)重叠的数值范围。这样就可以使用这个变量作为条件变量了

#连续型变量x将会被分割为#个区间,重叠度为proportion,每个区间内观测数相等
myx<- equal.count(x, number = #, overlap = proportion)

分组变量:将每个条件变量产生的图形叠加到一起,在同一幅图中展示,只需要将条件变量放到绘图函数中的group声明中即可。

> require(stats)## Tonga Trench Earthquakes
> library(lattice)
> Depth <- equal.count(quakes$depth, number=8, overlap=.1)
> xyplot(lat ~ long | Depth, data = quakes)

1.2 lattice绘图系统相关参数对照表

参数名 参数解释

spect 数值,设定每个面板中图形的宽高比

col/pch/lty/lwd 向量,分别设定图形中的颜色、符号、线条类型和线宽

Groups 用来分组的变量(因子)

index.cond 列表,设定面板的展示顺序

key(或auto.key) 函数,添加分组变量的图例符号

layout 两元素数值型向量,设定面板的摆放方式(行数和列数);如有需要,可以添加第三个元素,以指定页数

Main/sub 字符型向量,设定主标题和副标题

Panel 函数,设定每个面板要生成的图形

Scales 列表,添加坐标轴标注信息

Strip 函数,设定面板条带区域

Split/position 数值型向量,在一页上绘制多幅图形

Type 字符型向量,设定一个或多个散点图的绘图参数,(如p=点,l=线,r=回归,smooth=平滑曲线,g=格点)

xlab/ylab 字符型向量,设定横轴和纵轴标签

xlim/ylim 两元素数值型向量,分别设定横轴和纵轴的最小和最大值

示例3:lattice绘图系统相关参数

xyplot(Sepal.Length ~ Petal.Length | Species,data = iris, scales = "free", layout = c(2, 2),auto.key = list(x = .6, y = .7, corner = c(0, 0)))

1.3 面板函数

自定义面板的各个选项,然后在绘制图形的函数中调用即可

示例4:panel面板函数设置

mypanel = function(x,y){panel.abline(v=mean(x),h=mean(y), lty=2) # 加线,v是水平线,h是竖直线,线类型为2,panel.lmline(x,y,col="red") # 加线性回归线,颜色红色}xyplot(Sepal.Length ~ Petal.Length | Species,data = iris, ,panel=mypanel,scales = "free", layout = c(2, 2),auto.key = list(x = .6, y = .7, corner = c(1, 0)))

1.4 图形参数

查看默认的图形参数使用trellis.par.get()函数;修改这些参数使用trellis.par.set()函数;show.settings()函数可以展示当前的图形参数设置情况。

1.5 页面布局

lattice无法使用par()函数,因此需要将图形存储到对象中,然后利用plot()函数中的split = 或position = 选项来进行控制

split的方法,将第一幅图放置到第二幅图的上面:第一个plot()函数把页面分割为一列两行的矩阵,并将图形放置到第一列第一行中;第二个plot()函数将图形放置到第一列第二行中,由于plot()函数默认启动新的页面,因此使用newpage = FALSE选项。

> library(lattice)
> x <- data.frame(matrix(1:100,ncol=1))
> set.seed(100)
> y1 <- rnorm(100,1,20)  #rnorm(n, mean=0, sd=1) 正态分布
> set.seed(100)
> y2 <- rnorm(100,2,20)
> graph1 <- xyplot(y1~x)
> graph2 <- xyplot(y2~x)
> plot(graph1, split = c(1,1,1,2)) #打印graph1
> plot(graph2, split = c(1,2,1,2), newpage = FALSE) #在相同画布上打印graph2

position方法,设定坐标,原点位于页面左下角,x轴和y轴维度范围为(0, 1),position = (xmin, ymin, xmax, ymax)。

> plot(graph1, position = c(0, .3, 1, 1))
> plot(graph2, position = c(0, 0, 1, .3), newpage = FALSE)

2 ggplot2绘图系统

ggplot2将数据、数据到图形要素的映射以及图形要素绘制分离,然后按图层叠加的方式作图,通过+进行叠加。

ggplot2基本要素

  • 数据(Data)和映射(Mapping):Data(数据) 感兴趣的变量(data frame)
  • 几何对象(Geometric):point / line / histogram / bar / boxplot
  • 标尺(Scale):标度是一种函数,它控制了数学空间到图形元素空间的射
  • 统计变换(Statistics):binning / smoothing / descriptive / inferential
  • 坐标系统(Coordinante):坐标系统控制了图形的坐标轴并影响所有图形元素
  • 图层(Layer):将包含有各种图形元素的图层叠放在一起,组合成最终效果
  • 分面(Facet):很多时候需要将数据按某种方法分组分别作图。Facet就是控制分组绘图的方法和排列形式。
  • 主题(Theme)

ggplot2入门示例

> df <- data.frame(gp = factor(rep(letters[1:3], each = 10)),  y = rnorm(30)) #生成数据
> ggplot(df, aes(gp, y)) #建立映射关系,此情况下仅输出基本画布信息,并没有数据点/线

> df <- data.frame(gp = factor(rep(letters[1:3], each = 10)),  y = rnorm(30)) #生成数据
> ggplot(df, aes(gp, y)) + geom_point() #建立映射关系并添加点几何对象#或
> df <- data.frame(gp = factor(rep(letters[1:3], each = 10)),  y = rnorm(30)) #生成数据
> p <- ggplot(df, aes(gp, y))  #建立映射关系,并赋值给p
> p + geom_point()#基于p添加点几何对象

由于ggplot2绘图系统内容繁杂,本文不再展开,本公众号将在下一节全面展开对ggplot2使用的案例呈现。

往期回顾

R语言 | 第一部分:数据预处理

R语言|第2讲:生成数据

R语言常用的数据输入与输出方法 | 第三讲

R语言数据管理与dplyr、tidyr | 第4讲

R语言 控制流:for、while、ifelse和自定义函数function|第5讲

r语言导入ggplot2_R语言 可视化之三大绘图系统概述:base、lattice和ggplot2 | 第7讲...相关推荐

  1. r语言导入ggplot2_R语言绘图之ggplot2包

    R语言绘图之ggplot2包 (2018-09-25 03:09:30) 6月份一直在忙期末考试,今天来迅速的学习下ggplot2包的简单绘图. R的基础包里面也有很多画图函数,例如plot();ba ...

  2. r语言导入ggplot2_R语言教程:数据结构+导入数据!

    ↑↑↑   关注选刊说   ↑↑↑ 您的SCI选刊助手! 2.1 数据结构 数据集通常是由数据构成的一个矩形数组,行表示观测,列表示变量(但不同行业对行和列叫法不同,在R中用观测和变量代表行和列). ...

  3. r语言导入ggplot2_R语言入门--画图(一)--ggplot2

    先写一些需要用到的知识点,比如包.函数 dplyr 很好用的包 经常与ggplot2连用 mutate:用于对数据框的列进行重新处理,或者用处理的结果添加新列 数据清洗: 1.na.omit()   ...

  4. R语言编写自定义函数计算R方、使用自助法Bootstrapping估计多元回归模型的R方的置信区间、可视化获得的boot对象、估计单个统计量的置信区间、分别使用分位数法和BCa法

    R语言编写自定义函数计算R方.使用自助法Bootstrapping估计多元回归模型的R方的置信区间.可视化获得的boot对象.估计单个统计量的置信区间.分别使用分位数法和BCa法(Bootstrapp ...

  5. R语言使用ggradar包可视化基本雷达图(radar chart、蜘蛛图spider plot)、可视化单个数据对象的雷达图

    R语言使用ggradar包可视化基本雷达图(radar chart.蜘蛛图spider plot).可视化单个数据对象的雷达图 目录

  6. R语言导入、读取网络CSV数据(Read a CSV from a URL)实战:R原生read_csv、readr包、data.table

    R语言导入.读取网络CSV数据(Read a CSV from a URL)实战:R原生read_csv.readr包.data.table 目录 R语言导入.读取网络CSV数据(Read a CSV ...

  7. R语言使用ggradar包可视化基本雷达图(radar chart、蜘蛛图spider plot)、可视化单个数据对象的雷达图、自定义雷达图的线条类型、线条宽度、数据点大小、色彩等

    R语言使用ggradar包可视化基本雷达图(radar chart.蜘蛛图spider plot).可视化单个数据对象的雷达图.自定义雷达图的线条类型.线条宽度.数据点大小.色彩等(Customize ...

  8. R语言gganimate包创建可视化gif动图、并使用anim_save函数保存可视化gif动图(gganimate export to gif)

    R语言gganimate包创建可视化gif动图.并使用anim_save函数保存可视化gif动图(gganimate export to gif) 目录

  9. R语言ggplot2可视化分面图(faceting): ggplot2可视化分面图(facet_wrap)并设置不同的分面使用不同的坐标轴数值范围、以及不同的轴标签断点间隔breaks

    R语言ggplot2可视化分面图(faceting): ggplot2可视化分面图(facet_wrap)并设置不同的分面使用不同的坐标轴数值范围.以及不同的轴标签断点间隔breaks 目录

最新文章

  1. Exchange 2016集成ADRMS系列-12:域内outlook 2010客户端测试
  2. 在JDK 6和JDK 7的substring()方法的区别?
  3. 查看journalnode节点状态信息_OpenStack Cinder服务状态排错
  4. 关于JavaScript中的几种匿名行数的写法
  5. Session的异常
  6. SQL 2005 数据库镜像
  7. 数字图像处理——2D降噪
  8. 统计字符数(信息学奥赛一本通-T1187)
  9. c++输出的值精确到小数点后5位_c/c++linux 2019最新阿里研发类面试题及答案分享...
  10. Android简单登录界面布局设计
  11. MVX Android设计架构浅析-MVC
  12. _validate_lengths‘ from ‘numpy.lib.arraypad
  13. JavaCV本地视频流通过帧图片添加文本进行字幕合成
  14. 智算时代里,浪潮存储的使命与担当
  15. 2018届成都市二诊数学(文)21题第二问的另类证法(切线放缩法)
  16. vue-router 在ie内核下页面不跳转
  17. 支持Micro USB安卓接口与iphone 8手机的5W无线充电芯片|无线快充芯片小封装SOP8外围简单精简
  18. 萌生to绽放 ▏2个月打造2亿销量的爆款理财产品
  19. Linux运维篇之进程管理②
  20. python源码实例之根据生日预测星座和属相以及属相对应年份(附源码 可供学习)

热门文章

  1. linux下多进程编程简介
  2. hbase2.0 vs hbase1.x 延时比较
  3. 检测数(二进制形式)中1的个数
  4. rhel-server版安装vbox增强功能
  5. Android中图片的目录
  6. 笔记-【6】-JS中JSON的基础理解!
  7. STM32F10x_StdPeriph_Lib_V3.5.0库时钟分析及如何配置
  8. [转]parseUrl函数
  9. 内核级HOOK的几种实现与应用
  10. golang 执行命令 设置超时