问候,
基本上,我有两个数据向量(我们称之为实验和基线)。我想使用R的点阵库和直方图函数来并排绘制两个直方图,就像在this page末尾看到的那样。
我将数据保存在CSV文件中:
Label1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label2,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label3,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label4,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label5,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label6,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
每行应该是一对新的直方图。第1-9列表示实验数据(左侧直方图)。第10-18列表示基线数据(右侧直方图)。
任何人都可以帮我这个吗?感谢。
答案 0 :(得分:1)
您的数据格式不正确,无法使用lattice
进行分面。您可以使用reshape
对其进行重组。
read.csv(textConnection("Label1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label2,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label3,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label4,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label5,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
Label6,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18"), header = F)->data
colnames(data)[1] <- "ID"
colnames(data)[2:10] <- paste("exp",1:9, sep = "_")
colnames(data)[11:19] <- paste("base", 1:9, sep = "_")
library(reshape)
data.m <- melt(data, id = "ID")
data.m <- cbind(data.m, colsplit(data.m$variable, "_", names = c("Source","Measure")))
data.m
现在采用的格式是您真正想要的数据几乎所有内容。我不知道来自实验和基线的9个测量值中的每一个是否有意义或者可以进行有意义的比较,因此我将它们保持不同。
现在,您可以正确使用lattice
。
histogram(~value | Source + ID, data = data.m)
如果有意义地比较了测量值(即data[,2]
和data[,11]
在某种程度上是“相同的”),您可以重新设定数据以直接将实验与基线进行比较
data.comp <- cast(data.m, ID + Measure ~ Source)
## I know ggplot2 better
library(ggplot2)
qplot(base, exp, data = data.comp)+
geom_abline()+
expand_limits(x = 0, y = 0)
答案 1 :(得分:0)
这样的事情应该有效:
library(lattice)
data <- matrix(1:18, ncol=18, nrow=3, byrow=T)
for (i in 1:nrow(data))
{
tmp <- cbind(data[i,], rep(1:2, each=9))
print(histogram(~tmp[,1]|tmp[,2]), split=c(1,i,1,nrow(data)), more=T)
}
注意:这仅适用于少量数据行...对于较大的数据集,您可能需要考虑稍微不同的布局(更改split
中的histogram
参数)