Отображение мира с помощью выбранных цветных стран

#r #dataframe #ggplot2 #coordinates #ggmap

Вопрос:

Я пытаюсь составить карту мира, выделив только определенные страны на основе моих данных. Чего я пытаюсь добиться, так это раскрасить в синие оттенки отрицательные значения (чем больше число, тем темнее цвет, например, -5 будет темно-синим, -1 светло-синим), а в красных оттенках-положительные (5= темный, 1 = светло-красный). Кроме того, я хотел соответствующим образом наклеить ярлыки («-5″,»-4″,»-3″…»4″,»5″); Меня интересует только сокращение значений в 11 кластерах (от -5 до 5), что означает, что страна со значением 97 будет окрашена так же, как страна со значением 5. Вот мой код:

 library(RColorBrewer)
library(maptools)
library(ggplot2)
if (!require(gpclib)) install.packages("gpclib", type="source")
gpclibPermit()

data(wrld_simpl)

ddf = read.table(text="
                 country value
                 'Argentina' 2
                 'Australia' 3
                 'Belgium' 5
                 'Brazil' 17
                 'Canada' 2
                 'China' -2
                 'France' 7
                 'Germany' 97
                 'Indonesia' -2
                 'Italy' 9
                 'Japan' 9
                 'Portugal' -2
                 'Russia' 3
                 'Saudi Arabia' 2
                 'Singapore' -5
                 'Slovenia' 1
                 'Spain' -3
                 'Switzerland' 0
                 'Turkey' 0
                 'United States' 18", header=TRUE)

plotme <- function() {
  
  # align colors to countries
  
  ddf$brk <- cut(ddf$value, 
                 breaks= -5:5,
                 include.lowest=TRUE)
  
  # this lets us use the contry name vs 3-letter ISO
  wrld_simpl@data$id <- wrld_simpl@data$NAME
  
  wrld <- fortify(wrld_simpl, region="id")
  wrld <- subset(wrld, id != "Antarctica") # we don't rly need Antarctica
  
  gg <- ggplot()
  
  # setup base map
  gg <- gg   geom_map(data=wrld, map=wrld, aes(map_id=id, x=long, y=lat), fill="white", color="#7f7f7f", size=0.25)
  
  # add our colored regions
  gg <- gg   geom_map(data=ddf, map=wrld, aes(map_id=country, fill=brk),  color="#7f7f7f", size=0.25)
  
  # this sets the scale and, hence, the legend
  gg <- gg   scale_fill_manual(values=colorRampPalette(brewer.pal(11,'RdBu'))(length(ddf$value)), 
                               name="Country")
  
  # this gives us proper coords. mercator proj is default
  gg <- gg   coord_map()
  gg <- gg   labs(x="", y="")
  gg <- gg   theme(plot.background = element_rect(fill = "transparent", colour = NA),
                   panel.border = element_blank(),
                   panel.background = element_rect(fill = "transparent", colour = NA),
                   panel.grid = element_blank(),
                   axis.text = element_blank(),
                   axis.ticks = element_blank(),
                   legend.position = "bottom")
  gg

}

plotme()
 

Я не понимаю, почему он не использует выбранную мной палитру (она тоже должна быть синей), а также я не могу заставить аргумент «метки =» работать в функции cut (). Некоторые страны (Франция, Германия, США) также не окрашиваются!
Вот сюжет, который я получаю:

введите описание изображения здесь

БОЛЬШОЕ ВАМ СПАСИБО!!!

Комментарии:

1. length(ddf$value) Помогает ли nlevels(ddf$brk) вообще замена на шкале?

2. к сожалению, нет … но спасибо за усилия!