我想知道我是否可以使用
仅为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之间的值 执行上面的代码给出了以下图像:
现在,我想在每一行中为六个最小的值着色为红色。 有谁知道如何实现这个目标?
提前致谢,
斯文
答案 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)