Определение цветов в комбинированной карте - PullRequest
0 голосов
/ 25 сентября 2018

В данный момент я работаю над комбинированной картой, на которой, с одной стороны, будут показаны хороплеты, а с другой стороны, будут добавлены пузыри.По большей части мне удается это сделать, но есть проблемы с цветным дизайном.
Я могу определить цвет пузырьков только в функции geom_point.Однако, как только я захочу взять форму пузыря с цветом контура и использовать аргумент fill в пределах aes(), используются цвета хороплетов, которые определены в scale_fill_manual.

Отсюда мой вопрос: можно ли использовать второй аргумент scale_fill для цвета пузыря?
Или как я могу изменить легенду, чтобы дополнительное значение, определяющее цвет пузыря, не добавлялось взначения хороплета?

Вот пример для лучшего понимания:

#load data
lapply(c("rgdal","ggplot2","broom"),require,character.only=TRUE)
URL<-"https://ec.europa.eu/eurostat/cache/GISCO/distribution/v2/nuts/download/ref-nuts-2016-10m.shp.zip"
fil<-basename(URL)
if(!file.exists(fil))download.file(URL,fil)
fils<-unzip(fil)
shp<-grep("shp$",fils,value=TRUE)[4]
lay<-ogrListLayers(shp)[1]
de<-readOGR(shp,lay)
de<-de[de$CNTR_CODE=="DE",]
de.df<-tidy(de,region="NUTS_ID")

#choropleth data
values<-data.frame(group=unique(de.df$group),
                   emp=runif(length(unique(de.df$group)),1,100))
de.df<-merge(de.df,values,by="group")
de.df$emp_c<-cut(de.df$emp,breaks=c(seq(0,100,by=20)))

#point/bubble data
nuts_centr<-coordinates(de)
proj<-data.frame(group=de$NUTS_ID,
                 long=nuts_centr[,1],
                 lat=nuts_centr[,2],
                 size=runif(length(unique(de$NUTS_ID)),1,100))

#colours
col<-colorRampPalette(c("#fff7fb","#014636"))

Это график, где цвет пузырька определяется в пределах данной цветовой палитры хороплетов, и легенда соответственнонеправильно:

ggplot() +
  geom_polygon(data=de.df,
               aes(long,lat,group=group,fill=emp_c),
               alpha=0.75,colour="gray",lwd=0.1) +
  geom_point(data=proj, 
             aes(long,lat,size=size,fill="#ef6548"),
             colour="black",pch=21,alpha=.75) +
  scale_size_continuous(name="Employment",range=c(1,8)) +
  scale_fill_manual(name="Projects",values=col(7)) +
  theme(line=element_blank(),
        axis.text=element_blank(),
        axis.title=element_blank(),
        panel.background=element_blank()) +
  coord_equal()

В результате:

Map I

Это то, что должно выглядеть, за исключением отсутствующего цвета контурапузыри:

ggplot() +
  geom_polygon(data=de.df,
               aes(long,lat,group=group,fill=emp_c),
               alpha=0.75,colour="gray",lwd=0.1) +
  geom_point(data=proj,
             aes(long,lat,size=size),
             colour="#ef6548",alpha=.75) +
  scale_size_continuous(name="Employment",range=c(1,8)) +
  scale_fill_manual(name="Projects",values=col(6)) +
  theme(line=element_blank(),
        axis.text=element_blank(),
        axis.title=element_blank(),
        panel.background=element_blank()) +
  coord_equal()

В результате:

Map II

Как новичок с геоданными и с RI благодарен за любые советы,также в других областях, которые могли быть написаны неэффективно.

...