0

我想知道我是否只能使用 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 之间的值。
执行上述代码会得到以下图像:

矩阵可视化

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

在此先感谢,
斯文

4

2 回答 2

3

矩阵似乎使用格子(水平图)。您可以在顶部添加一个图层,

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)

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

于 2012-04-27T10:24:12.710 回答
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)
于 2012-04-27T10:48:22.130 回答