Изменить текст / метки легенды ggplot - PullRequest
6 голосов
/ 17 февраля 2012

Я считаю, что этот вопрос немного отличается от аналогичных вопросов, которые задавались здесь ранее из-за использования scale_fill_brewer(.Я работаю над хорлоплетом, похожим на этот https://gist.github.com/233134

Это выглядит так:

Chloropleth

и легенда вроде:

legend

Мне нравится, но я хочу поменять надписи на легенде с надрезанных надписей, например (2, 4] , на что-то более дружелюбное, например ' 2%4% 'или' 2% - 4% '. Я видел в других местах, легко изменить метки внутри шкалы _... как видно здесь .Я не могу понять, где поставить аргумент метки =. Я, конечно, мог бы перекодировать choropleth$rate_d, но это кажется неэффективным. Где я должен поставить аргумент labels=c(A, B, C, D...)?

Вот фрагмент кода интереса (для полного кода используйте ссылку выше)

choropleth$rate_d <- cut(choropleth$rate, breaks = c(seq(0, 10, by = 2), 35))

# Once you have the data in the right format, recreating the plot is straight
# forward.

ggplot(choropleth, aes(long, lat, group = group)) +
  geom_polygon(aes(fill = rate_d), colour = alpha("white", 1/2), size = 0.2) + 
  geom_polygon(data = state_df, colour = "white", fill = NA) +
  scale_fill_brewer(pal = "PuRd")

Заранее благодарю за помощь.

РЕДАКТИРОВАТЬ: ИСПОЛЬЗУЯ метод DWin (должен был опубликовать эту ошибку, так как это то, с чем я столкнулся раньше)

> ggplot(choropleth, aes(long, lat, group = group)) +
+   geom_polygon(aes(fill = rate_d), colour = alpha("white", 1/2), size = 0.2) + 
+   geom_polygon(data = state_df, colour = "white", fill = NA) +
+   scale_fill_brewer(pal = "PuRd", labels = lev4)
Error: Labels can only be specified in conjunction with breaks

1 Ответ

10 голосов
/ 17 февраля 2012

Помимо добавления измененной версии уровней, вам также нужно установить параметр 'breaks' в scale_fill_brewer:

lev = levels(rate_d)  # used (2, 4] as test case
 lev2 <- gsub("\\,", "% to ", lev)
 lev3 <- gsub("\\]$", "%", lev2)
 lev3
[1] "(2% to 4%"
lev4 <- gsub("\\(|\\)", "", lev3)
 lev4
[1] "2% to 4%"

ggplot(choropleth, aes(long, lat, group = group)) +
  geom_polygon(aes(fill = rate_d), colour = alpha("white", 1/2), size = 0.2) + 
  geom_polygon(data = state_df, colour = "white", fill = NA) +
  scale_fill_brewer(pal = "PuRd", labels = lev4, , breaks=seq(0, 10, by = 2) )
...