2012-04-27 195 views
0

顏色某些細胞我想知道是否能使用R:在矩陣

image 

命令顏色在R矩陣只有某些細胞。目前,我這樣做:

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

現在,我想每行中的顏色最小值爲紅色。 有沒有人有一個想法如何實現這一目標?

由於提前,
斯文

+0

您是指圖像中矩陣或「行」的「行」?從'?image':「x軸對應於行號,y軸對應列號......即90度逆時針旋轉」 – BenBarnes 2012-04-27 10:19:29

+0

這實質上是相同的。在我的CSV文件中,我有N行N個數字,它們將通過NxN矩陣顯示在文件中。 – 2012-04-27 10:26:43

+0

Ach,對不起。 「矩陣」,而不是「矩陣」。 – BenBarnes 2012-04-27 10:29:34

回答

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

非常感謝! – 2012-04-27 10:31:33

+0

是否可以顯示輸出? – Sam 2012-11-15 14:45:24

0

你也可以簡單再拍矩陣,其中所有的v線索是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)