2016-09-29 32 views
1

我有一個20 * 40的矩陣,說test <- matrix(1,20,40),並且想要將它轉換爲圖像。`圖像`沒有在我指定的範圍內顯示我的矩陣

如果我直接顯示它:

image(test) 

它被顯示在範圍[0,1] * [0,1]

enter image description here

我想要顯示它的範圍[90,110] * [180,220]所以我做的:

image(test, xlim = c(90, 110), ylim = c(180, 220)) 

,但它並沒有顯示任何東西:

enter image description here

我想說明圖像和改變軸範圍,我該怎麼做?

+0

'矩陣(1,20,40)'給你800只1在一個矩陣。這是你想要的嗎?顏色1是白色的。你在第二個'image'調用中設置的限制大於1.嘗試'image(matrix(seq(1,800),20,40))'看看是否讓你在正確的路徑上。 –

+0

對不起,我沒有澄清我的問題。我想在之前更改座標軸上的比例。但是我沒有使用xlim和ylim,我一直認爲這是用來做這件事的。現在我的問題解決了,我知道我的錯誤。無論如何,我感謝你的幫助。 – Youdi

回答

0

你在這裏有一個誤解。當將被繪製由x控制矩陣,imagey參數,而xlimylim用於指定範圍,你在看,也就是說,你在哪裏在放大。

如果不指定xyimage(),只是通過在矩陣test,它會採取

x = seq(0, 1, length = nrow(test)) 
y = seq(0, 1, length = ncol(test)) 

繼續。所以矩陣實際上繪製在[0,1] * [0,1]上。如果您未進一步指定xlimylim,則image()將採用xlim = range(x)ylim = range(y),因此您正在檢查您正在繪圖的位置。但是,如果您進一步指定xlim = c(90, 110)ylim = c(180, 220),雖然矩陣仍在[0,1] * [0,1]中,但您正在放大[90, 110] * [180, 220],其中沒有任何內容。

正確的方法走的是:

image(x = 90:110, y = 180:220, z = test) 

enter image description here

+0

恩,謝謝你的幫助。我真的誤解了xlim和ylim。我以爲他們以前習慣在軸上改變比例。現在我知道如何使用它們以及如何解決我的問題。 – Youdi

相關問題