R:在Matrix中为某些细胞着色

时间:2012-04-27 10:07:57

标签: r lattice

我想知道我是否可以使用

仅为R矩阵中的某些单元着色
image

命令。目前,我这样做:

library(Matrix)

args <- commandArgs(trailingOnly=TRUE)

csv_name <- args[1]
pdf_name <- args[2]

pdf(pdf_name)
data <- scan(csv_name, sep=",")
len <- length(data)
num <- sqrt(len)
matrix <- Matrix(data, nrow=num, ncol=num)
image(matrix)
dev.off()

CSV文件包含0到1之间的值 执行上面的代码给出了以下图像:

Matrix visulization

现在,我想在每一行中为六个最小的值着色为红色。 有谁知道如何实现这个目标?

提前致谢,
斯文

2 个答案:

答案 0 :(得分:3)

矩阵似乎使用晶格(levelplot)。您可以在顶部添加图层

m = Matrix(1:9, 3)
library(latticeExtra)
image(m) + layer(panel.levelplot(1:2,1:2,1:2,1:2, col.regions="red"))

编辑:实际上,首先给出颜色更有意义,

levelplot(as.matrix(m), col.regions=c(rep("red", 6), "blue", "green", "yellow"), at=1:9)

但是我没有成功使用图片:

image(m, col.regions = c(rep("red", 6), "blue", "green", "yellow"), at=1:9)

我可能错过了文档中的一个优点......

答案 1 :(得分:0)

您也可以简单地创建另一个矩阵,其中所有值都是NaN,然后​​将值1添加到要突出显示的值:

set.seed(1)
z <- matrix(rnorm(100), 10,10)
image(z)

z2 <- z*NaN
z2[order(z)[1:5]] <- 1
image(z2, add=TRUE, col=4)
相关问题