千家信息网

大数据中数据地图多图层对象的颜色标度重叠问题的解决方案

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这期内容当中小编将会给大家带来有关大数据中数据地图多图层对象的颜色标度重叠问题的解决方案,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。今天这一篇是昨天推送的基础上进
千家信息网最后更新 2026年11月03日大数据中数据地图多图层对象的颜色标度重叠问题的解决方案

这期内容当中小编将会给大家带来有关大数据中数据地图多图层对象的颜色标度重叠问题的解决方案,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

今天这一篇是昨天推送的基础上进行了进一步的深化,主要讲如何在离散颜色填充的地图上进行气泡图图层叠加。

为了使得案例前后一致,仍然使用昨天的数据集。

加载包:

library("ggplot2")

library("plyr")

library("maptools")

library("sp")

library("ggthemes")

导入中国省界地图:

china_map<-readShapePoly("D:/R/rstudy/CHN_adm/bou2_4p.shp")

data1<- china_map@data

data2<- data.frame(id=row.names(data1),data1)

数据格式转化及业务数据合并:

china_map1 <- fortify(china_map)

china_map_data <- join(china_map1,data2, type = "full")

mydata <- read.csv("D:/R/rstudy/Province/geshengzhibiao.csv")

china_data <- join(china_map_data, mydata, type="full")

各省省会城市经纬度数据:

province_city <- read.csv("D:/R/rstudy/Province/chinaprovincecity.csv")

###根据自己的数据量级和具体业务需要设置分割点

mydata<-mydata[,-c(5,6)]

mydata$zhibiao<-rnorm(33,100,50)

mydata$zhibiao<-abs(mydata$zhibiao)

mydata$zhibiao2<-round(mydata$zhibiao,0)

mydata$fau <- cut(mydata$zhibiao, breaks = c(0,50,100,150,200,250))

###将转换的分段因子变量重新命名为我们需要的分段阀值:

mydata$fam<-factor(mydata$fau,levels=c('(0,50]','(50,100]','(100,150]','(150,200]','(200,250]'),labels=c('0~50','50~100','100~150','150~200','200~250'),order=TRUE)

#将业务数据与地理信息数据合并:

china_data <- join(china_map_data, mydata, type="full")

windowsFonts(myFont = windowsFont("微软雅黑"))

离散标度填充:

ggplot(china_data, aes(x = long, y = lat, group = group,fill =fam)) +

geom_polygon(colour="white")+

scale_fill_brewer(palette="Blues") + ###Blues&Greens

coord_map("polyconic") +

ggtitle("某公司2015~2016年度营业状况分布图")+

guides(fill=guide_legend(reverse=TRUE,title=NULL))+

theme_map() %+replace% theme(legend.position = c(0.08,0.4),legend.text.align=1)

在离散颜色标度的基础上添加各省份散点图:

ggplot() +

geom_polygon(data=china_data, aes(x=long,y=lat,group=group,fill=fam),colour="white")+

geom_point(data=province_city,aes(x=jd,y=wd),colour="red")+

scale_fill_brewer(palette="Blues") + ###Blues&Greens

coord_map("polyconic") +

ggtitle("某公司2015~2016年度营业状况分布图")+ #写入标题

guides(fill=guide_legend(reverse=TRUE,title=NULL))+

theme_map() %+replace% theme(legend.position = c(0.08,0.4),legend.text.align=1)

更该散点图为气泡图:

province_city$PerforamA<-round(rnorm(34,100,30),0)

province_city$PerforamB<-round(rnorm(34,100,30),0)

ggplot() +

geom_polygon(data=china_data, aes(x=long,y=lat,group=group,fill=fam),colour="white")+

geom_point(data=province_city,aes(x=jd,y=wd,size=PerforamA),shape=21,fill="#8E0F2E",colour="black",alpha=0.6)+

scale_fill_brewer(palette="Blues") + ###Blues&Greens

scale_size_area(max_size=6)+

coord_map("polyconic") +

ggtitle("某公司2015~2016年度营业状况分布图")+ #写入标题

guides(fill=guide_legend(reverse=TRUE,title=NULL),size=guide_legend(reverse=TRUE,title=NULL))+

theme_map() %+replace% theme(legend.position = c(0.08,0.4),legend.text.align=1)

本来打算再继续在气泡图的基础上进行颜色渐变填充呢,可以试了一下,这样的话前面的底图离散颜色标度填充的的时候已经使用过了一个fill属性设置选项,而要对气泡图进行颜色渐变填充就要再使用一次fill属性,可是目前为止我还不知道如何在多图层中出现多个fill属性的时候如何识别并分别进行标度设置,当我运行如下代码时,软件无法识别两个颜色标度设置分别对应的指标,因而图表无法跑出来:

ggplot() +

geom_polygon(data=china_data, aes(x=long,y=lat,group=group,fill=fam),colour="white")+

scale_fill_brewer(palette="Blues") + ###Blues&Greens geom_point(data=province_city,aes(x=jd,y=wd,size=PerforamA,fill=PerforamB),shape=21,fill="#8E0F2E",colour="black",alpha=0.6)+

scale_size_area(max_size=6)+

scale_fill_gradient2(low="DarkCyan", mid="Azure", high="Sienna", midpoint=median(province_city$PerforamB))+

coord_map("polyconic") +

ggtitle("某公司2015~2016年度营业状况分布图")+ #写入标题

guides(fill=guide_legend(reverse=TRUE,title=NULL),size=guide_legend(reverse=TRUE,title=NULL))+

theme_map() %+replace% theme(legend.position = c(0.08,0.4),legend.text.align=1)

Scale for 'fill' is already present. Adding another scale for 'fill', which will replace the existing scale.

Error: Discrete value supplied to continuous scale

实在是太遗憾了,不知道哪位大神知道如何处理多图层相同的fill属性,可以告知在下,这里先行谢过了。

那么这个问题真的那么难解决吗,倘若放在半年以前,确实如此,那个时候为此纠结了很久,一直耿耿于怀,可是如今的我,水平已经今非昔比了哈哈哈(容我傲娇一下~)

其实问题是这样的,该图表对象的需要三层颜色标度映射。

  • 最底层的离散填充标度;

  • 气泡图的大小标度:

  • 气泡图的填充标度;

困扰我的问题是,底层的多边形填充使用了一次fill属性,而气泡的颜色填充又使用了一次fill属性,所以两个颜色标度--

撞车了……

软件无法识别两个标度参数:

  • scale_fill_brewer(palette="Blues")

  • scale_fill_gradient2(low="DarkCyan", mid="Azure", high="Sienna")

分别是作用于那个图层的:

  • geom_polygon()

  • geom_point()

所以自己就崩溃罢工了~

当时想的方法是,是否可以给两个fill标度进行组合或者命名,最后也没搞定该如何进行区分。

前不久跟我的一个朋友聊天,聊起这个问题,也没有直接的解决方法, 可以聊天过程中突然发现了一条线索,R语言环境中的形状一共有25种,其中1~20种仅有colour属性而没有fill属性,21~25种既有colour属性又有fill属性,而我平时作图使用气泡图的时候,用惯了21号形状(主要是拥有两个颜色调整参数,比较利于后期属性调整)。

所以针对这个案例,使用21号形状的fill属性进行气泡内颜色标度映射,必然与多边形的fill映射冲撞,那么现在问题就好办了,放弃使用21号形状,选择一个只有colour属性映射的形状编号进行映射。

其中16、19号都符合要求,我随表挑选一个16号吧……

ggplot() +

geom_polygon(data=china_data, aes(x=long,y=lat,group=group,fill=fam),colour="white")+

scale_fill_brewer(palette="Greens") + ###Blues&Greens

geom_point(data=province_city,aes(x=jd,y=wd,size=PerforamA,colour=PerforamB),shape=16)+

scale_size_area(max_size=6)+

scale_colour_gradient(low="white",high="#D73434")+

coord_map("polyconic") +

ggtitle("某公司2015~2016年度营业状况分布图")+ #写入标题

guides(fill=guide_legend(reverse=TRUE,title=NULL),size=guide_legend(reverse=TRUE,title=NULL))+

theme_map() %+replace% theme(legend.position = c(0.08,0.4),legend.text.align=1)

OK,完美的解决了标度重叠问题,现在该地图已经用了三个可用的颜色标度了!

上述就是小编为大家分享的大数据中数据地图多图层对象的颜色标度重叠问题的解决方案了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

标度 颜色 属性 数据 气泡 问题 两个 公司 分布图 年度 形状 状况 离散 营业 地图 多图 时候 标题 对象 业务 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网医疗科技 奇酷互联网科技 互联网科技视频 西安互联网科技公司 上海卓越科技 互联网 互联网科技股有哪些 科技伦理 互联网公司 华中科技有哪些互联网大佬 互联网和高科技公司 天速互联网络科技有限公司 创业天下互联网科技有限公司 互联网企业和科技型企业 现代互联网科技股 江阴互联网智能科技产品进口 济南有互联网科技公司吗 为客找房互联网科技公司怎么样 昆明中奇联合互联网科技 互联网科技和医药行业 安徽九吞吴互联网科技有限公司 科技互联网企业在行动 哈尔滨大商圈互联网科技有限公司 河南云网互联网络科技有限公司 玉溪互联网科技怎么选 哈尔滨屹滨互联网科技有限公司 工业互联网展湾科技股份有限公司 互联网第三次科技革命特征 雨阳互联网卡科技有限公司 有人说阿里系是互联网科技企业 杭州科技互联网公司有哪些 互联网企业和网络科技有限公司
0