上图是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. 安装 oracle 11g 发行版 出现错误:由于以下错误,Enterprise Manager配置失败,启动Database Control时出错

    解决方案如下进入dos(1)查看dbconsole状态:emctl status dbconsole 显示:Environment variable ORACLE_SID not defined. P ...

  2. 2015-03-18——mongodb的简单配置

    参考网址:http://www.cnblogs.com/mecity/archive/2011/06/11/2078527.html#3060056 mongod 数据库启动程序 mongo 数据库操 ...

  3. 升级系统到ubuntun到18.04后apt-get执行失败

    系统升级到18.04后执行apt-get install的时候报错 root@zhf-maple:/home/zhf/桌面# apt-get install vim-sciptsE: 无法获得锁 /v ...

  4. Linux学习笔记(12)linux文件目录与用户管理

    基本常用目录 1.文件及目录 1.1.文件/文件夹权限 用法: (1)    chgrp group_name dir_name/file_name, (2)    chown user_name:g ...

  5. LeetCode:组合总数II【40】

    LeetCode:组合总数II[40] 题目描述 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candi ...

  6. 60. Permutation Sequence(求全排列的第k个排列)

    The set [1,2,3,…,n] contains a total of n! unique permutations. By listing and labeling all of the p ...

  7. 与进程相关的命令ps、kill

    一.概述 Ubuntu中主要有如下操作进程的命令 二.进程查看命令 ps 2.1 ps –l PPID:父进程的 PID PID:进程的PID S:进程状态,S:是指sleep睡眠状态:T:是挂起状态 ...

  8. react className 样式控制

    1.<div className={ "formbox " + this.state.classArr }></div> 2. this.state.cla ...

  9. case的嵌套使用

    case分支语句的格式如下: case $变量名 in 模式1) 命令序列1 ;; 模式2) 命令序列2 ;; *) 默认执行的命令序列     ;; esac case语句结构特点如下: 1.    ...

  10. 优秀 H5 案例收集 vol.1(不定期更新)

    一生要历经的三种战斗http://datang.wearewer.com/ 雍正去哪儿http://news.163.com/college/special/craftsman_h5/ 比Emoji更 ...