R:当行值和列值范围较小时,Levelplot会产生多余的空白。

4
使用R中的lattice包中的levelplot时,如果column.values和row.values的范围较小(例如范围小于1),则会发现图形周围存在额外的空白。如果column.values和row.values的范围更大(例如范围为10),则此问题将消失。
下面是一个说明此问题的示例:
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) 

这张图片是我的级别图。

现在,我们来对上面的代码进行修改,使行和列的值范围更大:

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

这张myLevelPlot图片是通过使用更大的row.values和column.values范围重新运行代码生成的。请注意,以下图片中不会出现多余的空白。

那么,当我有一个小的row.values和column.values范围时,如何避免出现这些多余的空白呢?

1个回答

4

这有点难。这个可以使用: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)

我不喜欢这两个警告,但有时候可以忽略警告...


1
好的,请不要忘记将答案标记为最佳(白色复选框将变为绿色)。同时,点赞也是不错的选择。我正在努力提高我的声望。 - Pierre Lapointe
我把你的答案标记为最佳。 :) 但是,似乎我的声望不够高,无法点赞。 - solvingPuzzles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接