此刻,我正在制作一张组合图,其中一方面将显示节律,另一方面将添加气泡。
在大多数情况下,我设法做到了,但是色彩设计存在问题。
我只能确定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()
结果:
除了气泡缺少的轮廓颜色外,这是它的外观:
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()
结果:
作为地理数据和R的新手,我非常感谢在其他领域(可能写得效率低下)的任何技巧。