科研星球

R语言统计与绘图:如何在一幅图中绘制多个子图

在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)

输出结果:

0 (5).jpeg

使用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"))
#}

输出结果:

0 (6).jpeg




没有账号?