利用R在一幅图中绘制多个子图

  • A+
所属分类:Script

R中,如何实现在一幅图中绘制多个子图呢,特别是当子图是以群组(group)来归类的时候?下面提供两种解决方案:
先虚构一组数据:
[plain]
Group Class Num
A X 80
A Y 30
B X 20
B Y 60
C X 70
C Y 80
D X 90
D Y 40
[/plain]
我们把它保存在“data.txt”文件中,每列以制表符分隔。
绘图要求:绘制bar图;Group为群组,即四个小图;Class为横轴;Num为纵轴。

使用lattice包


library(lattice)
data <- read.table("data.txt",header=T)
barchart(data$Num~data$Class|data$Group)

输出结果:

lattice包

使用matrix分割图纸


data <- read.table("data.txt",header=T)
layout(matrix(1:4, 2, 2,byrow=T))
barplot(data[data[,1]=="A",]$Num,main="A",col="lightblue",names.arg=c("X","Y"))
barplot(data[data[,1]=="B",]$Num,main="B",col="lightblue",names.arg=c("X","Y"))
barplot(data[data[,1]=="C",]$Num,main="C",col="lightblue",names.arg=c("X","Y"))
barplot(data[data[,1]=="D",]$Num,main="D",col="lightblue",names.arg=c("X","Y"))
#为简化代码,也可以使用循环
#for(i in levels(as.factor(data$Group))){
#barplot(data[data[,1]==i,]$Num,main=i,col="lightblue",names.arg=c("X","Y"))
#}

输出结果:

multi_matrix

原文来自:http://yixf.name/2011/03/14/%E5%9C%A8%E4%B8%80%E5%B9%85%E5%9B%BE%E4%B8%AD%E7%BB%98%E5%88%B6%E5%A4%9A%E4%B8%AA%E5%AD%90%E5%9B%BE/

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: