千家信息网

R语言怎么实现地图上的迷你条形图

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"R语言怎么实现地图上的迷你条形图"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!加载包
千家信息网最后更新 2026年11月01日R语言怎么实现地图上的迷你条形图

本篇内容介绍了"R语言怎么实现地图上的迷你条形图"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

加载包:

library(maptools)

library(ggplot2)

library(plyr)

library(ggmap)

导入地图素材及省会城市经纬度数据

china_shp <-readShapePoly("c:/rstudy/bou2_4p.shp")

china_map <- fortify(china_shp)

province_city <- read.csv("c:/rstudy/chinaprovincecity.csv") #城市经纬度数据

#新建三个指标,2015年和2016年的某经济度量指标(虚构)N15、N16和环比增长率Ratio。

province_city1<-mutate(province_city,N15=runif(34,min=500,max=1000),N16=runif(34,600,1100),Ratio=round((N16-N15)/N15,3))

province_data<-province_city1[sample(nrow(province_city1),10),]

合并后的数据结构如下,随即选取了10个城市的14、15年度某项经济指标(虚构)以及同比增长率。


ggplot的现有图层图形中是没有直接根据点坐标生成条形图、柱形图的,所以这里我们只能曲线救国,使用线条图和误差线来进行模拟。

首先来画底图:

ggplot()+

geom_polygon(aes(x=long, y=lat, group=group), data=china_map, fill="white", colour="grey60")


接下来使用geom_linerange函数(也就是条线图函数)进行各个坐标点的模拟柱形绘制。

线画出14年的指标值:

ggplot()+

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

geom_linerange(data=province_data,aes(x=jd-0.5,ymin=wd,ymax=wd+N15/max(N15,N16)*5),size=5,color="orange",alpha=0.8)


再叠加一次16年的指标值

ggplot()+

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

geom_linerange(data=province_data,aes(x=jd-0.5,ymin=wd,ymax=wd+0.7*N15/max(N15,N16)*5),size=3,color="#5B88A0",alpha=0.8)+

geom_linerange(data=province_data,aes(x=jd+0.5,ymin=wd,ymax=wd+0.7*N16/max(N15,N16)*5),size=3,color="#FB882C",alpha=0.8)


接下来我们来对已经塑造好的双柱条形图进行美化操作,

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

ggplot()+

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

geom_linerange(data=province_data,aes(x=jd-0.5,ymin=wd,ymax=wd+0.7*N15/max(N15,N16)*5),size=3,color="#5B88A0",alpha=0.8)+

geom_linerange(data=province_data,aes(x=jd+0.5,ymin=wd,ymax=wd+0.7*N16/max(N15,N16)*5),size=3,color="#FB882C",alpha=0.8)+

geom_text(aes(x=jd,y=wd-0.6,label=paste0(province_data$province,ifelse(Ratio>0,"▲","▼"),Ratio*100,"%")), data=province_data,family="myFont",size=2.5)+

theme_nothing()+

annotate("text", x=105, y=52, label="● 2015", color= "#5B88A0", size=8)+

annotate("text", x=105, y=49, label="● 2016", color= "#FB882C", size=8)


其实最初在网上看到该图(大概是刘万祥老师的博客,在此感谢老师的启发),他的做法是使用geom_errbar图层函数,也就是误差线图层函数,其实理念是一致的。这里给出原方法。

ggplot()+

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

geom_errorbar(data=province_data,aes(x=jd-0.5,ymin=wd,ymax=wd+0.7*N15/max(N15,N16)*5),size=3,color="#5B88A0",width=0,alpha=0.8)+

geom_errorbar(data=province_data,aes(x=jd+0.5,ymin=wd,ymax=wd+0.7*N16/max(N15,N16)*5),size=3,color="#FB882C",width=0,alpha=0.8)+

geom_text(aes(x=jd,y=wd-0.6,label=paste0(province_data$province,ifelse(Ratio>0,"▲","▼"),Ratio*100,"%")), data=province_data,family="myFont",size=2.5)+

theme_nothing()+

annotate("text", x=105, y=52, label="● 2014", color= "#5B88A0", size=8)+

annotate("text", x=105, y=49, label="● 2015", color= "#FB882C", size=8)


其实如果能换个思路,使用geom_errorh函数,想必一定了以做出横向的条形图。

ggplot()+

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

geom_errorbarh(data=province_data,aes(x=jd,y=wd,xmin=jd-3,xmax=jd+3*N15/max(N15,N16)),size=3,color="#5B88A0",height=0,alpha=0.8)+

geom_errorbarh(data=province_data,aes(x=jd,y=wd-0.8,xmin=jd-3,xmax=jd+3*N16/max(N15,N16)),size=3,color="#FB882C",height=0,alpha=0.8)+

geom_text(aes(x=jd+0.2,y=wd+1,label=paste0(province_data$province,ifelse(Ratio>0,"▲","▼"),Ratio*100,"%")), data=province_data,family="myFont",size=2.5)+

theme_nothing()+

annotate("text", x=105, y=52, label="● 2015", color= "#5B88A0", size=7)+

annotate("text", x=105, y=50, label="● 2016", color= "#FB882C", size=7)


"R语言怎么实现地图上的迷你条形图"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

条形 函数 指标 地图 接下来 城市 数据 语言 也就是 内容 增长率 指标值 更多 知识 线图 经济 经纬 经纬度 老师 误差 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 上海喔噻互联网科技有限公司 互联网是第几次科技革命的成果 广州百单互联网科技有限公司 金融科技还是互联网 礼当家互联网科技 互联网科技小额贷款 佰商互联网科技有限公司 海南科技产业互联网平台 互联网 科技馆 广州优美互联网科技 湖南一路畅行互联网科技 互联网科技商业 深圳艾果互联网通讯科技 为客找房互联网科技公司怎么样 互联网科技数字货币 云鲸互联网络科技有限公司 好易买互联网科技 中国主要互联网科技公司 科技发展第三阶段互联网时代 互联网属科技 上海互联网科技有限公司 合肥互联网科技公司 天扬科技互联网广告 温州喔噻互联网科技有限公司 杭州壁岐互联网科技有限公司 开一家科技互联网公司需要多少钱 互联网领先科技宣传片 互联网安防科技感 抖集互联网科技技术咨询
0