2016-11-29 51 views
1

我有一個矩陣定義爲使用如下如何使用`image`在常規佈局中顯示矩陣?

dataMatrix <- matrix(rnorm(400), nrow=40) 

然後dataMatix被繪製到屏幕下面

image(1:10, 1:40, t(dataMatrix)[, nrow(dataMatrix):1]) 

有人可以解釋圖像功能的第三個參數是如何工作的?我對[]內發生的事情特別困惑。謝謝

回答

3

沒有比示例更好的了。考慮8種元素的4 * 2整數矩陣:

d <- matrix(1:8, 4) 
#  [,1] [,2] 
#[1,] 1 5 
#[2,] 2 6 
#[3,] 3 7 
#[4,] 4 8 

如果我們image這個矩陣col = 1:8,我們將有顏色和像素之間的一對一的地圖:彩色i用於遮陽像素具有值i。在R中,顏色可以用0到8的9個整數指定(其中0是「白色」)。如果d在傳統的顯示器繪製您可以通過

barplot(rep.int(1,8), col = 1:8, yaxt = "n") 

enter image description here

查看非白人的價值觀,我們應該看到下面的色塊:

black | cyan 
red | purple 
green | yellow 
blue | gray 

現在,我們來看看image會顯示什麼內容:

image(d, main = "default", col = 1:8) 

enter image description here

我們預計,(4行,2列)塊顯示屏,但我們得到了(2行,4列)顯示。因此,我們要轉d然後再試一次:

td <- t(d) 
#  [,1] [,2] [,3] [,4] 
#[1,] 1 2 3 4 
#[2,] 5 6 7 8 

image(td, main = "transpose", col = 1:8) 

enter image description here

EM,更好的,但似乎該行順序是相反的,所以我們要甩掉它。

## reverse the order of columns 
image(td[, ncol(td):1], main = "transpose + flip", col = 1:8) 

enter image description here

是的,這就是我們想要的東西:其實,這樣的翻轉應的td列之間,因爲有4列td進行!我們現在有一個傳統的矩陣顯示器。

注意ncol(td)只是nrow(d),並td只是t(d),所以我們也可以這樣寫:

image(t(d)[, nrow(d):1]) 

這是你有什麼權利了。

+0

啊哈!所以 [,ncol(td):1]#是列 和 [nrow(td):1,]#是行 – David

+0

@李,非常感謝你,非常清楚。我會很樂意參考文檔;-) – David

+0

@ Li。完成!找到了 ! – David