R: Levelplot дает лишние пробелы, когда диапазон row.values ​​и column.values ​​мал - PullRequest
4 голосов
/ 06 января 2012

При использовании levelplot (из пакета решетки) в R, я заметил, что есть дополнительные пробелы по краям графа, если диапазон 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) 

Это изображение - это myLevelPlot.

Теперь, давайте настроим код выше, чтобы иметь больший диапазон для row.values ​​и column.values:

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

Это изображение myLevelPlot было сгенерировано путем повторного запуска кода с большим диапазоном row.values ​​и column.values. Обратите внимание, что посторонние пробелы не появляются в следующих изображение.

Итак, как мне избежать этого постороннего пробела, когда у меня есть небольшой диапазон для row.values ​​и column.values?

1 Ответ

4 голосов
/ 06 января 2012

Это сложный вопрос. Это работает: 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)

Мне не нравятся два предупреждения, но иногда предупреждения можно игнорировать ...

...