上图是R语言绘制的按地域分布的数据图。更科学,更严谨,也更有质感的样子。

今天瞎写点东西,我在想数据分析的意义是什么,也许就是研究事物存在的形式。而事物存在的形式是什么样子呢,从最初的三维空间,爱因斯坦伯伯把时间也拉了进来,于是时间作为一种变化的空间而存在着,成为第四维。现在好像还发现了第五空间,可能是人的心理空间或者意识空间,还有人说是曲率,不一而足。个人认为i,所有的事物应该都是彼此联系的,没有单纯的独立的与其他东西绝缘的存在。而人的内心,人的思维目前确实是独立于其他四维的空间。所以他应该是另一种存在,但应该以一种其他的形式,可以和其他维度相统一的形式。波么? 还是更细的粒子?亦或是更加悬而未远的东西。

拉回数据分析,数据分析常用的维度吧,时间,空间,以及复杂的人群分布(人的各种属性,造成了各种人群的分布)。而空间,R语言有一些MAP的方法。于是站在巨人的肩膀上,今天来画地图吧。

基本MAP方法:

1.世界地图:有一些R包中存储着常见地图的数据,比如maps包中存有世界地图、美国地图、美国各州郡地图、法国地图以及加拿大城市地图等,加载了这个包,就可以轻松愉快地绘制上述地图。mapdata包中存有中国地图的数据,但是比较旧了,这个数据,重庆还没有从四川分出来呢。

library(maps)
map("world", fill = TRUE, col = rainbow(200),
ylim = c(-60, 90), mar = c(0, 0, 0, 0))
title("世界地图")

2.中国地图:

调取maptools,ggplot2,mapproj 包,读入大神自己改编绘制的中国维度图。

library(maptools)
x=readShapePoly('bou2_4p.shp')
library(ggplot2)
library(mapproj)
#可以看到中国地图的框框
为了进一步在ggplot2包中绘图,需要把SpatialPolygonsDataFrame数据类型转化为真正的data.frame类型才可以。
ggplot2包专门针对地理数据提供了特化版本的fortify函数来做这个工作
用这个函数将X 烹饪一下,
geom_polygon 是多边形填充路径的函数,而地图其实就是一个多边形的各种组合,于是用这种函数,画地图很合适。
mymap=ggplot(data = fortify(x))+geom_polygon(aes(x=long,y=lat,group=id),colour="black",fill=NA)+theme_grey()
print(mymap+coord_map())
 
到此,可以看到一个手绘中国地图。
 
第二步,我将我想放入的数据,整到这个地图上,
ch = fortify(x,region = 'NAME')
#拿出各省的编码数据,从"GBK" 格式转换
ch = transform(ch,id=iconv(id,from = 'GBK'),group = iconv(group, from = 'GBK'))
names(ch)[1:2] = c("x","y")
#省份去重且排序
mychdat = data.frame(id = unique(sort(ch$id)))
t<-read.table("首次购用户分布.csv",header=TRUE,sep=",")
#数据拼接
mychdat$users <- t$users
mychdat
 
tmp= coordinates(x)
tmp = as.data.frame(tmp)
tmp$names = x$NAME
#画图,还带标签哦,路盲不怕了
 
 
chmap = ggplot(mychdat) + geom_map(aes(map_id = id, fill = users), color = "white", map = ch) +geom_text(aes(x = V1,y = V2,label = names), family = "GB1", data = tmp)+ scale_fill_gradient(high = "darkblue",low = "lightblue") + expand_limits(ch) + coord_map()
print(chmap)
 
注,family="GB1"是一种字体
 
好了,今天就到这吧.
 
================================补充=================================================
将昨晚的code放入运行了一遍,发现根本不行,x是以最细的维度,所以有字标不能用这种方法。
 
搞了一份,省份经度纬度的资料
 
城市,Jd,Wd
北 京,116.4666667,39.9
上 海,121.4833333,31.23333333
天 津,117.1833333,39.15
重 庆,106.5333333,29.53333333
哈尔滨,126.6833333,45.75
长 春,125.3166667,43.86666667
沈 阳,123.4,41.83333333
呼和浩特,111.8,40.81666667
石家庄,114.4666667,38.03333333
太 原,112.5666667,37.86666667
济 南,117,36.63333333
郑 州,113.7,34.8
西 安,108.9,34.26666667
兰 州,103.8166667,36.05
银 川,106.2666667,38.33333333
西 宁,101.75,36.63333333
乌鲁木齐,87.6,43.8
合 肥,117.3,31.85
南 京,118.8333333,32.03333333
杭 州,120.15,30.23333333
长 沙,113,28.18333333
南 昌,115.8666667,28.68333333
武 汉,114.35,30.61666667
成 都,104.0833333,30.65
贵 阳,106.7,26.58333333
福 州,119.3,26.08333333
台 北,121.5166667,25.05
广 州,113.25,23.13333333
海 口,110.3333333,20.03333333
南 宁,108.3333333,22.8
昆 明,102.6833333,25
拉 萨,91.16666667,29.66666667
香 港,114.1666667,22.3
澳门,113.5,22.2 按照这个省会资料,重新读取作为地图的标示
代码是这样的

capdate<-read.table("province.csv",header=TRUE,sep="\t")
head(capdate)

chmap = ggplot(mychdat) + geom_map(aes(map_id = id, fill = users), color = "white", map = ch) +geom_text(aes(x = Jd,y = Wd,label = provice), family = "GB1",size=2, data = capdate)+ scale_fill_gradient(high = "darkblue",low = "lightblue") + expand_limits(ch) + coord_map()

print(chmap)

最终出来的效果是这样的

 

R语言和中国地图的更多相关文章

  1. R绘制中国地图,并展示流行病学数据

    流行病学的数据讲究“三间分布”,即人群分布.时间分布和空间分布.其中的“空间分布”最好是在地图上展示,才比较清楚.R软件集统计分析与高级绘图于大成,是最适合做这项工作了.关于地图的绘制过程,谢益辉.邱 ...

  2. 闲来无事,在微信推文中看到一个炫酷的具有动态特效的中国地图,是用R语言做的,于是尝试了一下

    目录 最终的效果图如下: 1.环境准备 2.需要安装的包: 3.进一步配置: end 最终的效果图如下: 1.环境准备 既然是用R语言作图,那么这几个软件是一定需要安装的: R语言的编译器:https ...

  3. R语言学习笔记︱Echarts与R的可视化包——地区地图

    笔者寄语:感谢CDA DSC训练营周末上完课,常老师.曾柯老师加了小课,讲了echart与R结合的函数包recharts的一些基本用法.通过对比谢益辉老师GitHub的说明文档,曾柯老师极大地简化了一 ...

  4. R语言与医学统计图形-【29】地图的绘制

    R绘制地图原理: R使用一个个多边形(polygon)来表示每个区域,通过顺次连接GIS数据提供的每个区域多边形的坐标来逐点绘制这些多边形,所以理论上只要得到GIS数据就可绘制相应的地图. 地图绘制说 ...

  5. 用R画有图例的中国地图

    近期在网上找了几种画中国地图方法,终于认为这种方法还是最适用的 1.用googlevis包.因为中国国情如今已经不能訪问google地图了.所以大多中国用户来说仅仅能望洋兴叹了. 2.用ggplot包 ...

  6. R语言 一套内容 从入门 到放弃

    [怪毛匠子整理] 1.下载 wget http://mirror.bjtu.edu.cn/cran/src/base/R-3/R-3.0.1.tar.gz 2.解压: tar -zxvf R-3.0. ...

  7. R语言缺点

    R的优点:免费,开源,体积小.缺点:对大文本处理差,另外一个也在于开源,package如果出错,烦死你.当你跑比较大的simulation,对效率有要求的时候,有时还是不得不用C,这可能是10小时和1 ...

  8. 【转】R语言知识体系概览

    摘要:R语言的知识体系并非语法这么简单,如果都不了R的全貌,何谈学好R语言呢.本文将展示介绍R语言的知识体系结构,并告诉读者如何才能高效地学习R语言. 最近遇到很多的程序员都想转行到数据分析,于是就开 ...

  9. R语言中文社区历史文章整理(类型篇)

    R语言中文社区历史文章整理(类型篇)   R包: R语言交互式绘制杭州市地图:leafletCN包简介 clickpaste包介绍 igraph包快速上手 jiebaR,从入门到喜欢 Catterpl ...

随机推荐

  1. Python mock 的使用

    使用 mock 对象替换系统的一部分并且能获取它们的使用情况. 具体的说,你可以获取方法/属性的使用情况以及它们的调用参数.也可以指定返回值和设置属性. 思路是将对象设置为 mock 对象,然后根据需 ...

  2. AVCaptureInput和AVCaptureOutput子类

    1.AVCaptureInput AVCaptureDeviceInput:用于从AVCaptureDevice对象捕获数据. AVCaptureScreenInput:从macOS屏幕上录制的一种捕 ...

  3. JQuery输入自动完成

    Combogrid 是一个jQuery插件用于为输入框添加高级自完成功能(auto-complete).当用户输入的时候,会在输入框的下方面动态显示一个拥有分页功能 的表格(Grid)控件. 通过Aj ...

  4. nodejs使用——以elasticsearch-exporter为例

    安装nodejs: yum install nodejs 运行node命令查看是否安装成功: 可以看到成功进入命令行,安装成功. node命令前面要加点,使用 .help 查看有哪些命令: 使用.ex ...

  5. 我的Android进阶之旅------>Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题

    Android 设备的CPU类型通常称为ABIs 问题描述 解决方法 1解决之前的截图 2解决后的截图 3解决方法 4建议 为什么你需要重点关注so文件 App中可能出错的地方 其他地方也可能出错 使 ...

  6. CentOS7.1 KVM虚拟化之linux虚拟机安装(2)

    一.上传ISO文件到/data/iso下 这里使用CentOS-5.5-i386-bin-DVD.iso 二.安装CentOS5.5 CentOS7.1 安装KVM虚拟机默认磁盘格式为qcow2(推荐 ...

  7. 配置 Docker 镜像下载的本地 mirror 服务

    Docker registry 工具如今已经非常好的支持了 mirror 功能,使用它能够配置一个本地的 mirror 服务.将 pull 过的镜像 cache 在本地.这样其他主机再次 pull 的 ...

  8. Unity3d 面向对象设计思想(六)(Unity3d网络异步数据)

    在MonoBehavior类中有一个方法是StartCoroutine.里面要求的是一个接口为IEnumerator协同的返回值, 在Unity3d中,协同的作用是马上返回结果的.而不影响其它程序的运 ...

  9. JVM虚拟机—JVM的类加载机制

    1 什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构 ...

  10. python 多进程使用Queue通信的例子

    import time from multiprocessing import Process,Queue MSG_QUEUE = Queue(5) def startA(msgQueue): whi ...