在组合地图中定义颜色

时间:2018-09-25 08:39:09

标签: r ggplot2 bubble-chart choropleth

此刻,我正在制作一张组合图,其中一方面将显示节律,另一方面将添加气泡。 在大多数情况下,我设法做到了,但是色彩设计存在问题。
我只能确定geom_point函数中气泡的颜色。但是,只要我想采用带有轮廓色的气泡形状并在aes()中使用 fill 自变量,就可以在scale_fill_manual中定义Choropleth的颜色,被使用。

我的问题是:气泡颜色是否可以使用第二个scale_fill自变量?
或者如何更改图例,以便将定义气泡颜色的额外值不添加到Choropleth值中?

下面是一个更好理解的示例:

#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"))

这是在给定的Choroplets调色板内确定气泡颜色的图,因此图例是错误的:

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

作为地理数据和R的新手,我非常感谢在其他领域(可能写得效率低下)的任何技巧。

0 个答案:

没有答案