专栏首页机器学习与统计学R in action读书笔记(21)第十六章 高级图形进阶(上) 17P 建议wifi下阅读

R in action读书笔记(21)第十六章 高级图形进阶(上) 17P 建议wifi下阅读

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="car weight",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)

本文分享自微信公众号 - 机器学习与统计学(tjxj666)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-05-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R in action读书笔记(22)第十六章 高级图形进阶(下)

    在lattice图形中,lattice函数默认的图形参数包含在一个很大的列表对象中,你可通过trellis.par.get()函数来获取,并用trellis.p...

    统计学家
  • 【统计学家的故事】泊松定理、泊松公式、泊松方程、泊松分布、泊松过程的西莫恩·德尼·泊松

    西莫恩·德尼·泊松(Simeon-Denis Poisson 1781~1840)法国数学家、几何学家和物理学家。1781年6月21日生于法国卢瓦雷省的皮蒂维耶...

    统计学家
  • 【数据分析 R语言实战】学习笔记 第十一章 典型相关分析

    典型相关分析研究两组变量之间的相关问题,采用主成分的思想浓缩信息,根据变量间的相关性.将两组变量的关系集中到少数几对综合变量(观测变量的线性组合)上。

    统计学家
  • 技术人员的成长之路——这也是你的故事

    毕业于我国南部城市某985重点大学计算机系的“80后”青年李元芳,通过参加广州南方人才市场春季大型招聘会,从众多的应聘者中脱颖而出,被当时在广州乃至全国都小有名...

    博文视点Broadview
  • Android自定义控件实现折线图

    首先是控件绘图区域的划分,控件左边取一小部分(控件总宽度的八分之一)绘制表头,右边剩余的部分绘制表格

    砸漏
  • pandas进阶

    李智
  • 并发编程之CyclicBarrier

    一、CyclicBarrier简介 CyclicBarrier也叫同步屏障,在JDK1.5被引入,可以让一组线程达到一个屏障时被阻塞,直到最后一个线程达到屏...

    lyb-geek
  • Spring事务源码解析(三)

    在之前的文章Spring事务源码解析(二)获取增强中,我们分析了Spring事务的实现是基于AOP实现的,还分析了增强BeanFactoryTransactio...

    Java学习录
  • 性能测试分析怎么做

    性能测试旨在确定系统的性能以衡量性能问题,验证系统的性能质量属性,例如在各种负载条件下的响应性, 速度, 可伸缩性, 稳定性. 在混合负载条件下对系统进行了测试...

    louiezhou001
  • 硬纪元AI峰会实录 | 英伟达何犹卿:AI深度学习正在改变世界

    镁客网

扫码关注云+社区

领取腾讯云代金券