В данный момент я работаю над комбинированной картой, на которой, с одной стороны, будут показаны хороплеты, а с другой стороны, будут добавлены пузыри.По большей части мне удается это сделать, но есть проблемы с цветным дизайном.
Я могу определить цвет пузырьков только в функции 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()
В результате:
Это то, что должно выглядеть, за исключением отсутствующего цвета контурапузыри:
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()
В результате:
Как новичок с геоданными и с RI благодарен за любые советы,также в других областях, которые могли быть написаны неэффективно.