16.2.4 图形参数

在lattice图形中,lattice函数默认的图形参数包含在一个很大的列表对象中,你可通过trellis.par.get()函数来获取,并用trellis.par.set()函数来修改。show.settings()函数可展示当前的图形参数设置情况。查看当前的默认设置,并将它们存储到一个mysettings列表中:

  1. > show.settings()
  2. > mysettings<-trellis.par.get()

查看叠加点的默认设置值:

  1. > mysettings$superpose.symbol
  2.  
  3. $alpha
  4.  
  5. [1] 1 1 1 1 1 1 1
  6.  
  7. $cex
  8.  
  9. [1] 0.8 0.8 0.8 0.8 0.8 0.8 0.8
  10.  
  11. $col
  12.  
  13. [1] "#0080ff" "#ff00ff" "darkgreen" "#ff0000" "orange" "#00ff00" "brown"
  14.  
  15. $fill
  16.  
  17. [1] "#CCFFFF" "#FFCCFF""#CCFFCC" "#FFE5CC" "#CCE6FF" "#FFFFCC""#FFCCCC"
  18.  
  19. $font
  20.  
  21. [1] 1 1 1 1 1 1 1
  22.  
  23. $pch
  24.  
  25. [1] 1 2 3 4 5 6 7 8 9 10

可以看到分组变量的每个水平都使用空心圆圈(pch = 1)。定义了7个水平后,图形符号

将会被循环使用。最后,我们再做如下声明:

  1. > mysettings$superpose.symbol$pch<-c(1:10)
  2. > trellis.par.set(mysettings)
  3. > show.settings()

此时lattice图形将对分组变量的第一个水平使用符号1(空心圆圈),第二个使用符号2(空心三角形),以此类推。另外,我们对分组变量的10个水平的符号都进行了定义,而不是7个。这种图形设置效果将会一直存在,直到关闭图形设备。你可以按照此方式对其他任意图形参数进行修改。

16.2.5 页面摆放

lattice函数不识别par()设置,先将lattice图形存储到对象中,然后利用plot()函数中的split =或position =选项来进行控制。split选项将页面分割为一个指定行数和列数的矩阵,然后将图形放置到该矩阵中。split选项的格式为:

  1. split=c(placement row,placement column,total number of rows,total number of columns)

例:

  1. > library(lattice)
  2. > graph1<-histogram(~height|voice.part,data=singer,
  3. + main="Heights of choral singers by voice part")
  4. > graph2<-densityplot(~height,data=singer,group=voice.part,
  5. + plot.points=FALSE,auto.key=list(columns=4))
  6. > plot(graph1,split=c(1,1,1,2))
  7. > plot(graph2,split=c(1,2,1,2),newpage=FALSE)

 

它将把第一幅图放置到第二幅图的上面。具体来讲,第一个plot()函数把页面分割成一列

两行的矩阵,并将图形放置到第一列、第一行中(自上往下、从左至右地计数)。第二个plot()

函数做同样的分割,但是把图形放置到第一列、第二行中。因为plot()函数默认启动一个新的页面,所以你需要禁止该操作,因此设定选项newpage = FALSE

使用position =选项可以对大小和摆放方式进行更多的控制:

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

position = c(xmin, ymin, xmax, ymax),该页面的x-y坐标系统是矩形,x轴和y轴的维度范围都是从0到1,原点(0, 0)在图形左下角。在lattice图形中你还可以改变面板的顺序。高级绘图函数的index.cond =选项可以设定条件变量水平的顺序。以voice.part因子为例:

  1. > levels(singer$voice.part)
  2. [1] "Bass 2" "Bass 1" "Tenor 2" "Tenor 1" "Alto 2" "Alto 1" "Soprano 2"
  3. [8] "Soprano 1"

16.3 ggplot2

ggplot2包提供了一个基于全面而连贯的语法的绘图系统。它弥补了R中创建图形缺乏一致

性的缺点,使得用户可以创建有创新性的、新颖的图形类型。ggplot2中最简单的绘图方式是利用qplot()函数,即快速绘图函数。格式为:

qplot(x, y = NULL, ..., data, facets =NULL, margins = FALSE,

geom = "auto", stat = list(NULL), position = list(NULL), xlim= c(NA,NA), ylim = c(NA, NA), log = "", main = NULL,xlab =deparse(substitute(x)), ylab = deparse(substitute(y)), asp = NA)

选项:描 述

alpha :元素重叠的alpha透明度,数值为0(完全透明)到1(完全不透明)间的分数

color、shape、size、fill :把变量的水平与符号颜色、形状或大小联系起来。对于直线图,colo将把线条颜色与变量水平联系起来,对于密度图和箱线图,fill将把填充颜色与变量联系起来。图例将会被自动绘制

data :指定一个数据框

facets :指定条件变量,创建一个栅栏图。表达式如rowvar~ colvar。为创建一个基于单条件变量的栅栏图,可用rowvar ~ .或. ~ colvar

geom :设定定义图形类型的几何形状。geom选项是一个单条目或多条目的字符型向量,

包括"point" 、"smooth" 、"boxplot" 、"line" 、"histogram"、"density"、"bar"和"jitter"

main、sub :字符向量,设定标题和副标题

method、formula :若geom ="smooth",则会默认添加一条平滑拟合曲线和置信区间。当观测数大于1000时,便需要调用更高效的平滑拟合算法。方法包括回归lm、广义可加模型gam、稳健回归rlm。formula参数指定拟合的形式例如,要添加简单的回归曲线,则设定geom = "smooth", method = "lm",formula = y ~ x。将表达式改为y ~poly(x, 2)将生成二次拟合。注意表达式使用的是字母x和y,而不是变量的名称对于method = "gam",一定要记得加载mgcv包。对于method ="rml",则需加载MASS包

x、y :指定摆放在水平轴和竖直轴的变量。对于单变量图形(如直方图),则省略y

xlab、ylab :字符向量,设定横轴和纵轴标签

xlim、ylim :二元素数值型向量,分别指定横轴和纵轴的最小值和最大值

  1. library(ggplot2)
  2.  
  3. mtcars$cylinder<-as.factor(mtcars$cyl)
  4.  
  5. qplot(cylinder,mpg,data=mtcars,geom=c("boxplot","jitter"),
  6.  
  7. fill=cylinder,
  8.  
  9. main="Box plots with superimposed data points",
  10.  
  11. xlab="Number of cylinders",
  12.  
  13. yalb="Miles per gallon")

型添加回归线和置信区间带

传动类型定义了行分面,而气缸数则定义了列分面。数据点的大小代表了汽车马力

的评分:

  1. library(ggplot2)
  2.  
  3. mtcars$cyl<-factor(mtcars$cyl,levels=c(4,6,8),
  4.  
  5. labels=c("4cylinders","6 cylinders","8 cylinders"))
  6.  
  7. mtcars$am<-factor(mtcars$am,levels=c(0,1),
  8.  
  9. labels=c("Automatic","manual"))
  10.  
  11. qplot(wt,mpg,data=mtcars,facets=am~cyl,size=hp)

  1. library(ggplot2)
  2.  
  3. data(singer,package="lattice")
  4.  
  5. qplot(height,data=singer,geom=c("density"),
  6.  
  7. facets=voice.part~.,fill=voice.part)

16.4 交互式图形

16.4.1 与图形交互:鉴别点

可对散点图中的点进行鉴别和标注的函数:identify()。利用该函数,你可用鼠标对散点图中所选择的点标注行数或者行名称,直到你选择了Stop或者右击图形识别工作才会停止。

  1. plot(mtcars$wt,mtcatrs$mpg)
  2.  
  3. identify(mtcars#wt,mtcars$mpg,labels=row.names(mtcars))

光标将从一个点变成一个十字。单击散点图上的点,可以对它们进行标注,直到你从Graphics Device(图形设备)菜单中选择了Stop,或者右击了图形并从右键菜单中选择了Stop。

16.4.2 playwith

playwith包提供了一个GTK+图形用户界面(GUI),使得用户可以编辑R图形并与其交互。

playwith()函数允许用户识别和标注点、查看一个观测所有的变量值、缩放和旋转图形、

添加标注(文本、箭头、线条、矩形、标题和标签)、修改视觉元素(颜色、文本大小等)、应用先前存储的图形风格,以及以多种格式输出图形结果。

  1. library(playwith)
  2.  
  3. library(lattice)
  4.  
  5. playwith(
  6.  
  7. xyplot(mpg~wt|factor(cyl)*factor(am),
  8.  
  9. data=mtcars,subscripts=TRUE,
  10.  
  11. type=c("r","p"))
  12.  
  13. )

playwith窗口。依赖于GTK+ GUI,用户可以使用鼠标编辑图形

与identify()函数不同,playwith()既对R基础图形有效,也对lattice和ggplot2

图形有效。Theme(主题)菜单上的一些选项仅与基础图形契合的很好,一些则与ggplot2图形契合的较好(如标注),还有些对ggplot2图形无效(如识别点)。

16.4.3 latticist

使用latticist包,可通过栅栏图方式探索数据集。该包不仅提供了图形用户界面,也可以通过vcd包来创建新的图形。如果有需要,latticist还能与playwith整合到一起,例:

  1. library(latticist)
  2.  
  3. mtcars$cyl<-factor(mtcars$cyl)
  4.  
  5. mtcars$gear<-factor(mtcars$gear)
  6.  
  7. latticist(mtcars,use.playwith=TRUE)

拥有latticist函数功能的playwith窗口。用户可创建lattice并与vcd图形交互

16.4.4 iplots包的交互图形

playwith和latticist包只能与单幅图形交互,而iplots包提供的交互方式则有所不同。该包提供了交互式马赛克图、柱状图、箱线图、平行坐标图、散点图和直方图,以及颜色刷,并可将它们结合在一起绘制。这意味着你可通过鼠标对观测点进行选择和识别,并且对其中一幅图形的观测点突出显示时,其他被打开的图形将会自动突出显示相同的观测点。另外,还可通过鼠标来收集图形对象(诸如点、条、线)和箱线图的信息。

函数 描 述

ibar() 交互式柱状图

ibox() 交互式箱线图

ihist() 交互式直方图

imap() 交互式地图

imosaic() 交互式马赛克图

ipcp() 交互式平行坐标图

iplot() 交互式散点图

例:

  1. library(iplots)
  2.  
  3. attach(mtcars)
  4.  
  5. cylinders<-factor(cyl)
  6.  
  7. gears<-factor(gear)
  8.  
  9. transmission<-factor(am)
  10.  
  11. ihist(mpg)
  12.  
  13. ibar(gears)
  14.  
  15. iplot(mpg,wt)
  16.  
  17. ibox(mtcars[c("mpg","wt","qsec","disp","hp")])
  18.  
  19. ipcp(mtcars[c("mpg","wt","qsec","disp","hp")])
  20.  
  21. imosaic(transmission,cylinders)
  22.  
  23. detach(mtcars)

现在尝试以下步骤。

 单击柱状图(gears)窗口的三号齿轮条,直条将会变红色。另外,其他图形窗口中的所

有三齿轮发动机都会被突出显示。

 鼠标下移,并在散点图(wt对mpg)窗口选择一个含有点的矩形区域。这些点将会被突出显示,而其他图形窗口中相应的观测点也将会变成红色。

 按住Ctrl键不动,将鼠标移动到某幅图形中点、条、箱线图或线上,该对象的详细信息将会在一个弹出窗口中显示出来。

 右击任何对象,便可在右键菜单中获得一些选项。例如,你可以右击箱线图(mpg)窗口,将图形转变为一个平行坐标图(PCP)。

 拖动鼠标可选择不止一个对象(点、条等),或使用Shift键通过单击选择不邻接的对象。

你可尝试在柱状图(gears)窗口选择三号和五号齿轮条。

16.4.5 rggobi

GGobi有许多吸引眼球的优点,包括:交互式散点图、柱状图、平行坐标图、时间序列图、散点图矩阵和三维旋转的综合使用;窗口刷和点识别;多变量变换方法;复杂的探索平台,如导向动画的和手动的1维及2维图形。令人振奋的是,rggobi软件包为GGobi和R提供了一个无缝接口。

R in action读书笔记(22)第十六章 高级图形进阶(下)的更多相关文章

  1. R in action读书笔记(21)第十六章 高级图形进阶(上)

    16.1 R 中的四种图形系统 基础图形函数可自动调用,而grid和lattice函数的调用必须要加载相应的包(如library(lattice)).要调用ggplot2函数需下载并安装该包(inst ...

  2. R in action读书笔记(12)第九章 方差分析

    第九章方差分析 9.2 ANOVA 模型拟合 9.2.1 aov()函数 aov(formula, data = NULL, projections =FALSE, qr = TRUE, contra ...

  3. Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切

    原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切 代码工程地址: https://git ...

  4. UNP学习笔记(第二十六章 线程)

    线程有时称为轻权进程(lightweight process) 同一进程内的所有线程共享相同的全局内存.这使得线程之间易于共享信息,然后这样也会带来同步的问题 同一进程内的所有线程处理共享全局变量外还 ...

  5. R in action读书笔记(19)第十四章 主成分和因子分析

    第十四章:主成分和因子分析 本章内容 主成分分析 探索性因子分析 其他潜变量模型 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分.探索性因 ...

  6. R in action读书笔记(16)第十二章 重抽样与自助法之 置换检验

    第十二章:重抽样与自助法 本章,我们将探究两种应用广泛的依据随机化思想的统计方法:置换检验和自助法 12.1 置换检验 置换检验,也称随机化检验或重随机化检验. 有两种处理条件的实验,十个受试者已经被 ...

  7. WPF,Silverlight与XAML读书笔记第四十六 - 外观效果之三皮肤与主题

    说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 皮肤 皮肤是应用程序中样式与模板的集合,可以 ...

  8. 《深入理解java虚拟机》读书笔记十一——第十二章

    第十二章  Java内存模型与线程 1.硬件效率与一致性 由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cac ...

  9. R in action读书笔记(20)第十五章 处理缺失数据的高级方法

    处理缺失数据的高级方法 15.1 处理缺失值的步骤 一个完整的处理方法通常包含以下几个步骤: (1) 识别缺失数据: (2) 检查导致数据缺失的原因: (3) 删除包含缺失值的实例或用合理的数值代替( ...

随机推荐

  1. 前台传JSON到后台

    现在,有一个需求,我需要将表格中选中行的数据中的一部分传直接传到控制器中,然后保存到另外一张表中.一开始,我就想到在前台使用ajax构造json数据,然后控制器直接通过list接收. 选中界面中的行, ...

  2. C# MVC 枚举转 SelectListItem

    <span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif; background-color: r ...

  3. 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016) E.Passwords AC自动机+dp

    题目链接:点这里 题意: 让你构造一个长度范围在[A,B]之间 字符串(大小写字母,数字),问你有多少种方案 需要满足条件一下: 1:构成串中至少包含一个数字,一个大写字母,一个小写字母:   2:不 ...

  4. javaScript查找HTML元素

    1.通过id查找 例:查找id="intro"元素 var x=document.getElementById("intro"); 2.通过标签名查找 例:查找 ...

  5. bzoj1465 bzoj1045: [HAOI2008] 糖果传递&&bzoj3293: [Cqoi2011]分金币

    一道神奇的题..看到做法是排序我的心是绝望的.. 首先我们可以先求出每个小朋友应该得到的糖果数,就是平均值,然后ave-a[i]就代表要从其他小朋友那得到多少个糖果(如果是负数就是要送出糖果)然后求前 ...

  6. bzoj 5017 炸弹

    题目大意: 直线上有n个炸弹有坐标x和半径r 当一个炸弹被引爆时 若有炸弹的坐标在该炸弹坐标+-r范围内则另一个炸弹也被引爆 求先引爆每一个炸弹最终会引爆多少炸弹 思路: 可以想到n平方连边然后tar ...

  7. 博弈论中的SG函数

    SG函数的定义: g(x) = mex ( sg(y) |y是x的后继结点 ) 其中mex(x)(x是一个自然是集合)函数是x关于自然数集合的补集中的最小值,比如x={0,1,2,4,6} 则mex( ...

  8. 最安全的api接口认证

    最安全的api接口认证 实现步骤: 1.客户端与服务器都存放着用于验证的Token字段,客户端在本地把自己的 用户名+时间戳+Token 组合进行MD5加密后生成一段新的md5-token. 2.客户 ...

  9. linux内存管理之uboot第一步

    在进入讲解linux内存管理的kernel阶段以前,了解一下uboot阶段是如何准备好内存物理设备的,这是非常有意义的.通常进入到linux内核阶段之后,对内存芯片的物理特性寄存器访问是比较少的,强调 ...

  10. RobotFramework模拟手机浏览器

    转自 http://blog.csdn.net/max229max/article/details/70808867 感谢max bai提供的思路 Python - Selenium Chrome 模 ...