spplot () - делает color.key красивым - PullRequest
5 голосов
/ 02 марта 2011

Боюсь, у меня снова возник вопрос spplot ().

Я хочу, чтобы цвета в моем spplot () представляли абсолютные значения, а не автоматические значения, как это делает spplot по умолчанию.

Я достигаю этого, делая фактор из переменной, которую я хочу нарисовать (используя команду cut ()). Это работает очень хорошо, но цветная клавиша совсем не выглядит хорошо.

Смотри сам:

library(sp)

data(meuse.grid)
gridded(meuse.grid) = ~x+y

meuse.grid$random <- rnorm(nrow(meuse.grid), 7, 2)
meuse.grid$random[meuse.grid$random < 0] <- 0
meuse.grid$random[meuse.grid$random > 10] <- 10
# making a factor out of meuse.grid$ random to have absolute values plotted
meuse.grid$random <- cut(meuse.grid$random, seq(0, 10, 0.1)) 

spplot(meuse.grid, c("random"), col.regions = rainbow(100, start = 4/6, end = 1))

Как сделать так, чтобы цвет color.key справа выглядел хорошо - я хотел бы иметь меньше тиков и меньше меток (может быть, только одна метка на каждом экстремуме color.key)

Заранее спасибо!

[править] Чтобы прояснить, что я имею в виду под абсолютными значениями: представьте карту, на которой я хочу отобразить высоту моря. Seaheight = 0 (что является минимальным значением) всегда должно отображаться синим цветом. Seaheight = 10 (который только для примера является максимальным значением) всегда должен отображаться красным. Даже если в регионах, отображаемых на карте, нет моря, это не должно измениться. Я достигаю этого с помощью команды cut () в моем примере. Так что эта часть отлично работает.

ЭТО ТО, ЧТО МОЙ ВОПРОС О Что мне не нравится, так это описание цвета на правой стороне. Есть 100 тиков, и у каждого тика есть ярлык. Я хочу меньше тиков и меньше меток.

Ответы [ 2 ]

6 голосов
/ 12 апреля 2011

Способ заключается в использовании атрибута colorkey.Например:

## labels
labelat = c(1, 2, 3, 4, 5)
labeltext = c("one", "two", "three", "four", "five")

## plot
spplot(meuse.grid,
    c("random"),
    col.regions = rainbow(100, start = 4/6, end = 1),
    colorkey = list(
        labels=list(
            at = labelat,
            labels = labeltext
        )
    )
)
0 голосов
/ 02 марта 2011

Во-первых, не совсем понятно, чего вы здесь хотите. Есть много способов заставить color.key выглядеть «красиво», и это понять сначала данные, передаваемые в spplot, и то, что от них требуется. cut () предоставляет полностью отформатированные интервалы, такие как (2.3, 5.34], которые необходимо обрабатывать другим способом, увеличивая поля на графике, определенное форматирование и интервал для меток и т. д. и т. д. Это может не совпадать с тем, что вы в конечном итоге хочу.

Возможно, вы просто хотите целочисленные значения, округленные от входных значений?

library(sp)

data(meuse.grid)
gridded(meuse.grid) = ~x+y

meuse.grid$random <- rnorm(nrow(meuse.grid), 7, 2)

Округление значений (или trunc (), ceil (), floor () их...)

meuse.grid$rclass <- round(meuse.grid$random)

spplot(meuse.grid, c("rclass"), col.regions = rainbow(100, start = 4/6, end = 1))
...