2016-06-30 235 views
1

我想將y軸(「行」)的標籤從減少(從上到下)更改爲增加(從上到下),以正確匹配繪圖值。這應該對任何y軸標籤(自動)完成,而不僅僅是手動定義y軸上的值(換句話說,我如何在y軸上取出使用的標籤,顛倒它們的順序,然後把它們放回來作爲標籤?panel.levelplot()看起來像什麼?)。另外,這應該在不使用額外包的情況下完成。如何反轉水平圖中y軸標籤的順序?

library(lattice) 
A <- outer(1:100, 1:100, FUN = function(x, y) (x+2*y)/300) 
levelplot(t(A)[, nrow(A):1], xlab = "Column", ylab = "Row") 

這個想法是在視覺上匹配矩陣的結構(對角線從左上角到右下角)。謝謝。

回答

2

只需設置ylim=c(100,1),或者更好的,ylim=c(100.5,0.5)

## Prepare figures with and without inverted y-axes, for easy comparison 
a <- levelplot(t(A)[, nrow(A):1], xlab = "Column", ylab = "Row") 
b <- levelplot(t(A)[, nrow(A):1], xlab = "Column", ylab = "Row", 
      ylim=c(100.5, 0.5)) 

## Plot figs side-by-side to confirm that this works 
library(gridExtra) 
grid.arrange(a, b, ncol=2) 

enter image description here

+0

嗨喬希,謝謝。我不知道你可以恢復伊利姆,相當不錯。除此之外,是否有自動的方式去除沒有標籤的刻度線(第100行)?人們可以稍稍縮小範圍,但對於小(A)小的已經不是最理想的。 –

+0

@MariusHofert - 要控制刻度標記,請使用'?xyplot'中記錄的'scales ='參數。在這裏,您可能需要添加:'scales = list(x = list(at = 20 *(1:4)),y = list(at = 20 *(4:1)))''。 –

+0

...會很好地自動獲取「默認比例」,然後刪除最後一個tick ...(因爲實際問題是一個獲取不同大小矩陣的函數)。 –