ggplot2中怎么自定义数据地图版面范围

这篇文章主要介绍了ggplot2中怎么自定义数据地图版面范围,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

创新互联公司是一家专业提供鄱阳企业网站建设,专注与成都做网站、成都网站制作、html5、小程序制作等业务。10年已为鄱阳众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。

之前联系过程中遇到的一个小技术问题,就是在ggplot2制作数据地图时,使用标度调整参数进行范围限定时,总是出现错误,版面上出现交错的线条和条带。

应该是自己添加的标度限定参数与ggplot2映射规则出现了冲突,特别再加上空间投影参数,这种冲突和错乱就显得更加明显。

其实我就是想要获取这样一幅数据地图,而不是做完整个世界地图之后再去裁剪导出的图片。(那样会显得很不fashion)。

ggplot2中怎么自定义数据地图版面范围

library("ggplot2")

library("plyr")

library("maptools")

library("ggthemes")

options(stringsAsFactors=FALSE,warn=FALSE)

world_map <-readShapePoly("D:/R/rstudy/wold_map/World_region.shp")

x <- world_map@data    

xs <- data.frame(x,id=seq(0:250)-1) 

world_map1 <- fortify(world_map)    

world_map_data <- join(world_map1, xs, type = "full")

mydata <- read.csv("D:/R/rstudy/wold_map/Region_map.csv") 

mydata$fam<-cut(mydata$zhibiao1,breaks=c(0,100,200,300,400,500),labels=c('0~100','100~200','200~300','300~400','400~500'),order=TRUE,include.lowest=TRUE)

world_data <- join(world_map_data, mydata, type="full")

这是完整的世界地图:

windowsFonts(myfont=windowsFont("微软雅黑 Light")) 

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

geom_polygon(colour="white")+

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

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

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

theme_map() %+replace% 

theme(title=element_text(family="myfont"),legend.position=c(0.08,0.4),legend.text.align=1)

ggplot2中怎么自定义数据地图版面范围

倘若我想将该地图版面聚焦到中国的领土范围内,但是呢,又不想单独呈现孤零零的中国地图,我需要中国周边的这些邻国边界,来锁定中国在亚洲地区的大致位置,这些周边领国边界不要求都拥完整的行政区划,可以根据版面的需要,进行矩形切割就行。

这样看起来必须对世界地图进行切割,而且需要切割的是美学映射参数x,y的范围(也就是坐标系统的范围)。

我们都知道在ggplot2系统中,调整X,Y的标度范围拥有布置一个的可选参数:

  • xlim/ylim

  • expand_limits()

  • scale_x/y_continuous()

其实坐标轴系统中也可以嵌入标度调整参数:

  • coord_map()

那么应该使用哪个方法进行调整呢,这里就卖个关子,我们一个一个来尝试:

切割的范围为:

  • 经度:60~155

  • 维度:0~65

这个范围刚好可以涵盖我国领土的完整范围:

  • 方案一:xlim/ylim

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

     geom_polygon(colour="white")+

     xlim(60,155)+ylim(0,65)+

     scale_fill_brewer(palette="Blues") +  

     coord_map("polyconic") +

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

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

     theme_map() %+replace% 

 theme(title=element_text(family="myfont"),legend.position=c(0.08,0.4),legend.text.align=1)

ggplot2中怎么自定义数据地图版面范围

切割效果如下,有反馈但是效果不佳,未达到目的,第一种方案宣告失败。

  • 方案二:expand_limits()

ggplot(world_data, aes(x = long,y=lat,group=group)) +

     geom_polygon(aes(fill =fam),colour="white")+

     expand_limits(x=c(60,155),y=c(0,65))+

     scale_fill_brewer(palette="Blues") +  

     coord_map("polyconic") +

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

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

     theme_map() %+replace% 

 theme(title=element_text(family="myfont"),legend.position=c(0.08,0.4),legend.text.align=1)

ggplot2中怎么自定义数据地图版面范围

这次结果又失败了,不仅没有完成目标,底部还出现了一条莫名其妙的线条。

  • 方案三:scale_x/y_continuous()

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

     geom_polygon(colour="white")+

     scale_x_continuous(limits=c(60,155))+

     scale_y_continuous(limits=c(0,65))+

     scale_fill_brewer(palette="Blues") +  

     coord_map("polyconic") +

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

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

     theme_map() %+replace% 

 theme(title=element_text(family="myfont"),legend.position=c(0.08,0.4),legend.text.align=1)

ggplot2中怎么自定义数据地图版面范围

第三种方案又以失败告终,结果跟第一种的问题一模一样。

那么现在就剩最后一一种方案啦,希望这次能成功。

  • 方案四:coord_map()

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

     geom_polygon(colour="white")+

     scale_fill_brewer(palette="Blues") +  

     coord_cartesian(xlim=c(60,155),ylim=c(0,65))+

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

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

     theme_map() %+replace% 

 theme(title=element_text(family="myfont"),legend.position=c(0.88,0.3),legend.text.align=1)

ggplot2中怎么自定义数据地图版面范围

ok,这次成功了,但是我放弃了使用coord_map()空间投影参数,而是使用了普通的笛卡尔二维坐标。

在ggplot2版面中制作数据对图,想要对版面进行有效的控制,需将标度范围的调整参数在坐标系内进行限定,否则会出现错乱,而是在限定范围的同时可能需要放弃使用空间投影(有没有更好的解决方案,目前还未知,留待以后解决)。

感谢你能够认真阅读完这篇文章,希望小编分享的“ggplot2中怎么自定义数据地图版面范围”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


文章标题:ggplot2中怎么自定义数据地图版面范围
文章来源:http://hbruida.cn/article/jdjicc.html