R in action读书笔记(21)第十六章 高级图形进阶(上)
16.1 R 中的四种图形系统
基础图形函数可自动调用,而grid和lattice函数的调用必须要加载相应的包(如library(lattice))。要调用ggplot2函数需下载并安装该包(install.packages("ggplot2")),第一次使用前还要进行加载(library(ggplot2))。
16.2 lattice 包
lattice包为单变量和多变量数据的可视化提供了一个全面的图形系统。在一个或多个其他变量的条件下,栅栏图形展示某个变量的分布或与其他变量间的关系。
> library(lattice)
> histogram(~height|voice.part,data=singer,main="Distributionof heights by voice pitch",xlab="height (inches)")
lattice包提供了丰富的函数,可生成单变量图形(点图、核密度图、直方图、柱状图和箱线图)、双变量图形(散点图、带状图和平行箱线图)和多变量图形(三维图和散点图矩阵)。各种高级绘图函数都服从以下格式:
graph_function(formula,data=,options)
graph_function是某个函数。
formula指定要展示的变量和条件变量。
data指定一个数据框。
options是逗号分隔参数,用来修改图形的内容、摆放方式和标注。
lattice中高级绘图函数的常见选项
lattice绘图示例:
> gear<-factor(gear,levels=c(3,4,5),labels=c("3 gears","4 gears","5 gears"))
> cyl<-factor(cyl,levels=c(4,6,8),labels=c("4 cylinders","6 cylinders","8 cylinders"))
> densityplot(~mpg,main="Density plot",xlab="miles per gallon")
> densityplot(~mpg | cyl,main="Density plot by number of cylinders",xlab="miles per gallon")
> bwplot(cyl~mpg|gear,main="box plots by cylinders and gears",xlab="carweight",ylab="cylinders")
> xyplot(mpg~wt|cyl*gear,main="scatter plots by cylinders and gears",xlab="car weight",ylab="miles per gallon")
> cloud(mpg~wt*qsec|cyl,main="d scatter plots by cylinders")
> dotplot(cyl~mpg|gear,main="dot plots by number of gears and cylinders",xlab="miles per gallon"
> splom(mtcars[c(1,4,5,6)],main="scatter plot matrix for mtcars data")
16.2.1 条件变量
> myshingle<-equal.count(x,number=#,overlap=proportion)
将会把连续型变量x分割到#区间中,重叠度为proportion,每个数值范围内的观测数相等,并返回为一个变量myshingle(或类shingle)。输出或者绘制该对象(如plot(myshingle))将会展示瓦块区间。一旦一个连续型变量被转换为一个瓦块,你便可以将它作为一个条件变量使用。
> displacement<-equal.count(mtcars$disp,number=3,overlap=0)
> xyplot(mpg~wt|displacement,data=mtcars,
+ main="miles per gallon vs weight by engine displacement",
+ xlab="weight",ylab="miles per gallon",
+ layout=c(3,1),aspect=1.5)
16.2.2 面板函数
每个高级绘图函数都调用了一个默认的函数来绘制面板。这些默认的函数服从如下命名惯例:panel.graph_function,其中graph_function是该水平绘图函数。如:xyplot(mpg~wt|displacement,data=mtcars)也可以写成:xyplot(mpg~wt|displacement,data=mtcars,panel=panel.xyplot)。自定义面板函数的xyplot:
>displacement<-equal.count(mtcars$disp,number=3,overlap=0)
> mypanel<-function(x,y){
+ panel.xyplot(x,y,pch=19)
+ panel.rug(x,y)
+ panel.grid(h=-1,v=-1)
+ panel.lmline(x,y,col="red",wd=1,lty=2)
+ }
>xyplot(mpg~wt|displacement,data=mtcars,
+ layout=c(3,1),
+ aspect=1.5,
+ main="miles per gallon vs weightby engine displacement",
+ xlab="weight",ylab="miles per gallon",
+ pannel=mypanel)
自定义面板函数和额外选项的xyplot
> library(lattice)
>mtcars$transmission<-factor(mtcars$am,levels=c(0,1),
+ labels=c("Automatic","Manual"))
> panel.smoother<-function(x,y){
+ panel.grid(h=-1,v=-1)
+ panel.xyplot(x,y)
+ panel.loess(x,y)
+ panel.abline(h=mean(y),lwd=2,lty=2,col="green")
+ }
> xyplot(mpg~disp|transmission,data=mtcars,
+ scales=list(cex=.8,col="red"),
+ panel=panel.smoother,
+ xlab="displacement",ylab="miles per gallon",
+ main="mpg vs displacement bytransmission typr",
+ sub="dotted lines are group means",aspect=1)
16.2.3 分组变量
当一个lattice图形表达式含有条件变量时,将会生成在该变量各个水平下的面板。若你想将结果叠加到一起,则可以将变量设定为分组变量(grouping variable).
> library(lattice)
>mtcars$transmission<-factor(mtcars$am,levels=c(0,1),
+ labels=c("Automatic","Manual"))
> densityplot(~mpg,data=mtcars,
+ group=transmission,
+ main="mpg distributuion bytransmission type",
+ xlab="miles per gallon",
+ auto.key=TRUE)
对图例进行更多的控制,可使用key =选项
> library(lattice)
> mtcars$transmission<-factor(mtcars$am,levels=c(0,1),
+ labels=c("Automatic","Manual"))
>colors=c("red","blue")#设定颜色、线和点类型
> lines=c(1,2)
> points=c(16,17)
>key.trans<-list(title="Transmission",#自定义图例
+ space="bottom",columns=2,
+ text=list(levels(mtcars$transmission)),
+ points=list(pch=points,col=colors),
+ lines=list(col=colors,lty=lines),
+ cex.title=1,cex=.9)
>densityplot(~mpg,data=mtcars,
+ group=transmission,
+ main="mpg distributuion bytransmission type",
+ xlab="miles per gallon",
+ pch=points,lty=lines,col=colors,#自定义密度图
+ lwd=2,jitter=.005,
+ key=key.trans)
包含分组变量和条件变量以及自定义图例的xyplot
> library(lattice)
>colors="darkgreen"
> symbols<-c(1:12)
> linetype<-c(1:3)
>
>key.species<-list(title="plant",
+ space="right",
+ text=list(levels(CO2$Plant)),
+ points=list(pch=symbols,col=colors))
>
>xyplot(uptake~conc|Type*Treatment,data=CO2,
+ group=Plant,
+ type="o",
+ pch=symbols,col=colors,lty=linetype,
+ main="carbon dioxide uptake\ningrass plants",
+ ylab=expression(paste("Uptake",
+ bgroup("(",italic(frac("umol","m"^2)),")"))),
+ xlab=expression(paste("Concenteation",
+ bgroup("(",italic(frac(mL,L)),")"))),
+ sub="Grass species:echinochloacrus-gailli",
+ key=key.species)
R in action读书笔记(21)第十六章 高级图形进阶(上)的更多相关文章
- R in action读书笔记(22)第十六章 高级图形进阶(下)
16.2.4 图形参数 在lattice图形中,lattice函数默认的图形参数包含在一个很大的列表对象中,你可通过trellis.par.get()函数来获取,并用trellis.par.set() ...
- R in action读书笔记(12)第九章 方差分析
第九章方差分析 9.2 ANOVA 模型拟合 9.2.1 aov()函数 aov(formula, data = NULL, projections =FALSE, qr = TRUE, contra ...
- R in action读书笔记(8)-第八章:回归(上)
8.1回归的多面性 8.2 OLS回归 OLS回归拟合模型形式: 为了能够恰当地解释oLs模型的系数,数据必须满足以下统计假设. 口正态性对于固定的自变量值,因变量值成正态分布. 口独立性Yi值之间相 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切 代码工程地址: https://git ...
- UNP学习笔记(第二十六章 线程)
线程有时称为轻权进程(lightweight process) 同一进程内的所有线程共享相同的全局内存.这使得线程之间易于共享信息,然后这样也会带来同步的问题 同一进程内的所有线程处理共享全局变量外还 ...
- R in action读书笔记(19)第十四章 主成分和因子分析
第十四章:主成分和因子分析 本章内容 主成分分析 探索性因子分析 其他潜变量模型 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分.探索性因 ...
- R in action读书笔记(16)第十二章 重抽样与自助法之 置换检验
第十二章:重抽样与自助法 本章,我们将探究两种应用广泛的依据随机化思想的统计方法:置换检验和自助法 12.1 置换检验 置换检验,也称随机化检验或重随机化检验. 有两种处理条件的实验,十个受试者已经被 ...
- WPF,Silverlight与XAML读书笔记第四十六 - 外观效果之三皮肤与主题
说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 皮肤 皮肤是应用程序中样式与模板的集合,可以 ...
- 《深入理解java虚拟机》读书笔记十一——第十二章
第十二章 Java内存模型与线程 1.硬件效率与一致性 由于计算机的存储设备与处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cac ...
随机推荐
- Android 怎样在java/native层改动一个文件的权限(mode)与用户(owner)?
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载.但请保留文章原始出处: CSDN:http://www.csdn.net ...
- iOS开发——高级篇——多线程GCD死锁
面试题 请问以下代码打印结果: - (void)interview01 { // 以下代码是在主线程执行的 NSLog(@"执行任务1"); dispatch_queue_t qu ...
- 安装oh-my-zsh失败,可按以下方式安装
参考:https://jingyan.baidu.com/article/8065f87fae247e2330249876.html .打开 iTerm21. .下载 : git clone git: ...
- Docker实现CentOS容器SSH远程登录
Docker实现CentOS容器SSH远程登录 https://blog.csdn.net/A632189007/article/details/78625378 这里根据Dockerfile方式构建 ...
- KMP算法在字符串中的应用
KMP算法是处理字符串匹配的一种高效算法 它首先用O(m)的时间对模板进行预处理,然后用O(n)的时间完成匹配.从渐进的意义上说,这样时间复杂度已经是最好的了,需要O(m+n)时间.对KMP的学习可以 ...
- 小程序-demo:快速开始
ylbtech-小程序-demo:快速开始 1.返回顶部 1.app.js //app.js App({ onLaunch: function () { // 展示本地存储能力 var logs = ...
- 《Deep Learning Face Attributes in the Wild》论文笔记
论文背景: IEEE International Conference on Computer Vision 2015 Ziwei Liu1, Ping Luo1, Xiaogang Wang2, X ...
- E20170520-ts
regexp n. 正则表达式 metacharacter メタ文字 元字符 quote vt. 引述,引用; escape v. 逃脱; 逃离; n. 逃走; 逃跑工具或方法; reg ...
- SAS基础 -- 逻辑库不存在问题解决
SAS安装 -- 逻辑库不存在问题解决 1.SAS打不开,将系统时间改为系统提示错误的时间: 2.请在以下两个路径下,新建SASCFG文件夹(注意红色部分为你电脑SAS的安装路径) D:\Prog ...
- bzoj 1609[Usaco2008 Feb]Eating Together麻烦的聚餐【dp】
设up[i][j]为第i位升序为j的最小修改数,down为降序 #include<iostream> #include<stdio.h> using namespace std ...