0

我有一个大数据框(下面是类似的小示例),我想使用 image() 显示矩阵中的值。首先,它绘制从右侧第 1 列开始并从右到左的列,但是,我希望它在左侧绘制第 1 列,然后从左到右。

其次,我想在图中添加一个“颜色条”,指示第 1 行和第 2 行具有相同的 $taxid,并且第 3 行和第 4 行具有相同的 $taxid。类似于热图中的“ColSideColors”。

有什么建议么?

谢谢你

df<-data.frame(taxid=c("A","A","B","B"),c2=c(1,2,3,4),c3=c(3,4,5,6))
nr<-dim(df)[1]
nc<-dim(df)[2]
z<-as.matrix(log(df[,2:3]))
image(x=1:nc, y=1:nr, z=t(z), axes=FALSE, frame.plot=TRUE)

好的,我现在决定尝试为颜色提示制作一个“瘦”条形图。但是,它不是“堆叠”条形图(尽管高度是一个向量,并且旁边 = FALSE。因此,当我使用布局组合它们时,它抱怨没有足够大的边距。

有关堆叠条形图或其他更复杂解决方案的任何帮助。谢谢

layout(matrix(c(1,2),1,2,byrow=FALSE),heights=c(1,1),widths=c(1,9))
barplot(as.vector(table(df$taxid)),width=0.1,beside=FALSE,col=rainbow(length(table(df$taxid))))
image(x=1:nc, y=1:nr, z=t(z), axes=FALSE, frame.plot=TRUE)
4

1 回答 1

0

您可以使用该rasterImage函数将色带添加到现有绘图:

tmp <- as.raster(  rev(c('#00ff00','#0000ff')[df$taxid]) ) 
par(xpd=NA)
rasterImage( tmp, 3, 0.5, 3.1, 4.5, interpolate=FALSE)

如果您没有 rasterImage 选项,则可以叠加 2 个图像图。下面我在原始矩阵中添加 2 列 NA 并扩展x=参数,以便在右侧添加一个小空白空间,然后我创建一个新矩阵,其中仅在第 4 列(所有其他 NA)中包含滑行信息并使用它使用相同x=但使用,add=TRUE以便在旧图像之上创建新图像图(但仅在先前的空白区域中添加颜色,并且不会过度绘制感兴趣的图像,因为这些值为 NA)。

z2 <- cbind(z, NA, NA)
image(x=c(1:3,3.05, 3.1), y=1:nr, z=t(z2), axes=FALSE)

z3 <- cbind(NA,NA,NA, as.numeric(df$taxid))
image(x=c(1:3,3.05, 3.1), y=1:nr, z=t(z3), add=TRUE, col=c('#00ff00','#0000ff'))
于 2012-04-19T16:58:38.637 回答