2012-01-05 33 views
2

在R中使用levelplot(from lattice package)時,我注意到如果在圖的邊緣附近有額外的空白column.values和row.values很小(例如範圍小於1)。如果column.values和row.values的範圍較大(例如範圍爲10),則此問題將消失。R:當row.values和column.values的範圍很小時,Levelplot給出無關的空格

這裏是一個能說明問題的例子:

library(gplots) # for colorpanel() 
library(lattice) # for levelplot() 

#generate data 
myData = runif(100) #generate vector of 100 random numbers 
myMatrix=matrix(myData, sqrt(length(myData)), sqrt(length(myData))) 

#generate vectors that will be used for col.values and row.values 
labelIncrement= 1/10 
labelLow = -0.5 
labelHigh = 0.5 - labelIncrement 

dataForRow.values <- c(seq(labelLow, labelHigh, labelIncrement)) 
dataForColumn.values <- c(seq(labelLow, labelHigh, labelIncrement)) 

myLevelsArbitrary <- c(0, 0.2, 0.4, 0.6, 0.8, 1.0) 
myColors = topo.colors(length(myLevelsArbitrary)+1) 

myLevelPlot = levelplot(myMatrix, 
    at=myLevelsArbitrary, 
    col.regions=myColors, 
    column.values=dataForColumn.values, 
    row.values=dataForRow.values, 
    main="Title", 
    xlab="Distance from center (cm)", 
    ylab="Distance from center (cm)", 
    colorkey=list(width=3)) 

plot(myLevelPlot) 

This image是myLevelPlot。

現在,讓我們調整上面的代碼有row.values和column.values一個更大的範圍:

labelIncrement= 1 
labelLow = -5 
labelHigh = 5 - labelIncrement 

This myLevelPlot image被重新運行與更大範圍內行的代碼生成。值和column.values。請注意,以下圖像中不會出現無關的空白。

那麼,如何避免有這種無關的空白,當我有一個小的範圍row.values和column.values?

回答

3

這是一個艱難的。這工作:scales = "sliced"

myLevelPlot = levelplot(myMatrix, 
    at=myLevelsArbitrary, 
    col.regions=myColors, 
    column.values=dataForColumn.values, 
    row.values=dataForRow.values, 
    main="Title", 
    xlab="Distance from center (cm)", 
    ylab="Distance from center (cm)", 
    scales = "sliced", 
    colorkey=list(width=3) 
    ) 
plot(myLevelPlot) 

我不喜歡兩個警告,但有時你可以忽略...

+0

輝煌 - 這對我的作品!謝謝! – solvingPuzzles 2012-01-06 03:14:56

+1

好,不要忘了標記答案爲最好(白色複選標記將變綠)。而upvote也會很好。試圖讓我的聲望提高。 – 2012-01-06 13:53:06

+0

我標記你的答案是最好的。 :)儘管如此,我似乎沒有足夠高的聲望被允許註冊。 – solvingPuzzles 2012-01-06 20:56:58