如何用ggplot2 添加直线在地图上添加饼图

Datartisan 数据工匠 | 数据时代,匠心独运
- 【R】用 ggplot2 绘制漂亮的分级统计地图
/ 【R】用 ggplot2 绘制漂亮的分级统计地图
【R】用 ggplot2 绘制漂亮的分级统计地图
最近我一直尝试利用R绘制地图,我从网上找到了上百种不同的实现方法,然而其中却没有适用于我的数据的方法。最终,我从以下几个博客【1】中找到了灵感。我在整合这些资源的基础上,通过不断的试验和修正得到了一个较好地解决方案。这个方案就是本篇博文的主要内容。
本篇博文中展示了如何利用 ggplot2 来绘制分级统计地图,同时还介绍了如何更改图例、颜色等参数指标,以及如何导出图像文件。
数据预处理
绘制分级统计地图需要一些软件包,你最好确认你的电脑中已经安装并加载了它们。我们利用 maptools 库中的 readShapeSpatial() 函数来读取形状数据。形状数据是储存了经纬度等地图信息的空间向量数据。好消息是,你可以免费下载这些数据!比如,你可以在这个网站中【2】下载全球各个国家的形状数据。
我的项目是对印度的数据进行绘图分析,所以我下载了印度的形状数据并将它们导入到 R 中。
我们所导入的形状数据是一个空间类型的数据,我们可以检查它的变量名来观测它包含哪些内容。比如我们可以输出各个邦的名称:
现在我们已经得到目标数据。接下来我将会编造一些数据,你也可以导入 csv 格式的数据或者从你估计的模型中提取数据。最重要的一点是,新导入的数据中 id 号码必须和形状数据中的 id 一致,因为我们等会要合并这两个数据集。
[译者注]此处代码有误,原数据的ID编码为,所以&id=1:num.states&应改为&id=1286+(1:num.states)&。
现在我们需要整合形状数据和目标数据集。首先,我们利用 ggplot 中的 fortify() 函数将形状数据转换成数据框格式的数据。该函数可以根据特定的识别变量将数据转化成数据框格式。
[译者注]此处显示的 ID 数据与原数据集的 ID 数据不一致。
我们可以看到这是一个常见的数据框格式的数据,其中列向量包含了经纬度数据。
接下来我们根据 ID 数据合并两个数据集,并保证空间数据集中没有缺失值。更重要的是,我们需要根据变量 order 对数据集进行排序。
我们准备利用 ggplot()、geom_polygon() 和 coord_map() 函数来绘图。
上一部分只是绘图的开始,我们还可以通过调整其他参数使图形变得更漂亮。首先,我们可以利用 ggmap() 库中的 theme_nothing() 来删除背景和网格线,同时还需要设置 legend 的参数绘制图例。当然,我们还可以更改图例和整个图像的标题。
接下来,我们将配色改为&YlGn&(从黄色到绿色过渡)。你可以通过 display.brewer.all() 函数来观察具体配色情况。
我们也可以利用 scales 库中的 pretty_breaks() 函数来获取最佳分割点。如果你不喜欢 pretty_breaks() 的方法,你还可以通过 scale_fill_gradient() 来实现:
scale_fill_gradient(name=&var&,limits=c(0,100),low=&white&,high=&red&)
其他参数:
如果你想要将数值表示为暗色而不是亮色,那么你们可以在 scale_fill_distiller() 中加入 trans=&reverse&。
如果你面对的是离散型变量,那么你应该采用 scale_fill_manual() 函数:
&&& 此外,你还可以将各个邦的名称也绘制到地图上。首先,你需要识别出每个邦名对应的经纬度数据。本文中,我们利用 aggregate() 函数计算每个州经纬度取值范围的均值并作为对应邦名的坐标。
&&& 虽然这张图看起来有点乱,但是通过其他设置它将变得非常有用。当然你还可以利用 geom_text() 在地图中添加一些重要的识别信息。
导出地图数据
最后,我们可以用两种方法导出地图数据。
方法一:利用 Cairo 来导出地图。(MAC需要安装 X11)
首先我们将图像保存到对象中,然后利用 ggsave() 将该对象转化成 png 文件。
方法二:利用 pdf() 函数将对象保存为 pdf 文件
参考资料:
【2】http://www.diva-gis.org/gdata
http://rforpublichealth.blogspot.de/2015/10/mapping-with-ggplot-create-nice.html
原文作者:Slawa Rokicki
翻译:Fibears
由 Editor 于 2015 年 11 月 09 日 发布在苹果/安卓/wp
学科带头人
学科带头人
积分 4552, 距离下一级还需 1273 积分
权限: 自定义头衔, 签名中使用图片, 隐身, 设置帖子权限, 设置回复可见
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡, 显身卡, 匿名卡, 抢沙发, 提升卡, 沉默卡, 千斤顶下一级可获得
道具: 变色卡
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
TA的文库&&
开心签到天数: 16 天连续签到: 1 天[LV.4]偶尔看看III
本帖最后由 kk22boy 于
21:28 编辑
自从四月份进行重大升级之后,0.90版的ggplot2包更新了很多新功能。之前的谈到了升级版的二维直方图。今天我们要谈的是绘制地图的新功能。其图形元素主要是通过geom_map来实现,在它的帮助文档中只描述了如何绘制美国地图,而美国地图是系统内maps包所自带的地图数据。其它图家地图数据则要从外部导入,本文则尝试从
获取中国行政区域数据,然后用ggplot2包进行绘图。是世界行政区域(或行政区域界线)位置的空间数据库,可以用于地理信息系统和类似软件。这个数据库也提供了R语言数据格式。
本例的目的是结合地理数据和水资源数据,以说明中国人均水资源拥有量的分布情况。基本步骤是先导入地理信息数据,将其转为ggplot2可以处理的数据框格式,将水资源数据整合进来,最后绘制成图。在下图中,红色代表了人均水资源拥有量较低的地区,黄绿色代表较高的地区。多年以来,华北地区都是有名的缺水地区,而长江以南水资源相对较为丰富,这一点很容易观察出来。而西藏、青海人口数量少,使人均水资源偏高。此外,根据全国水资源公报的数字,全国平均的人均水资源量是2200立方米。我们可以根据这一数字,将低于平均数的省份单独显示出来。顺便说下,公鸡的另一只腿可不是我吃了,数据原本如此。
R代码如下:
本帖隐藏的内容# 加载所需扩展包
library(ggplot2)
library(gpclib)
library(maptools)
# 读取地理信息数据
load(url(&http://gadm.org/data/rda/CHN_adm1.RData&))
# 人均水资源量
water &- c(3,35,47,358,
# 将数据转为数据框
gpclibPermit()
china.map &- fortify(gadm,region='ID_1')
vals &- data.frame(id =unique(china.map$id),val=water)
# 用ggplot命令绘图
ggplot(vals, aes(map_id = id)) +
& & geom_map(aes(fill = val), map =china.map) +
& & expand_limits(x = china.map$long, y = china.map$lat) +
& & scale_fill_continuous(low = 'red2',high ='yellowgreen',
& && &&&guide = &colorbar&) +
& & opts(title='中国人均年水资源拥有量',
& && & axis.line=theme_blank(),axis.text.x=theme_blank(),
& && & axis.text.y=theme_blank(),axis.ticks=theme_blank(),
& && & axis.title.x=theme_blank(),
& && & axis.title.y=theme_blank()) +
& & xlab(&&) + ylab(&&)
补充内容 ( 11:32):
#首先加载空间分析包
library(sp)
#从gadm.org网站上得到中国的省区地理数据,并加载到R软件内存中
load(url(&http://gadm.org/data/rda/CHN_adm1.RData&))
#从全国水资源公报上得到中国各省的人均水资源占有量,并存到变量中
gadm$water=c(3,35,47,358,
#利用空间绘图命令进行绘图
spplot(gadm,&water&,col.regions = rev(terrain.colors(gadm$water)),main=&中国人均水资源拥有量&)
补充内容 ( 11:32):
首先,从公众环境研究中心得到各省的数据,然后在google网站找到各省对应的地理位置编码,在excel中制成表格,然后读入到data.frame中。并载入googleVis包
data=read.table('clipboard',T)
library(googleVis)
数据框的部分数据如下显示:
head(data)
& &province&&code country waste
1& &&&Anhui CN-34& && &CN&&10.6
2& & Fujian CN-35& && &CN&&10.3
3& &&&Gansu CN-62& && &CN& &3.3
4 Guangdong CN-44& && &CN&&49.9
5& &Guangxi CN-45& && &CN&&14.4
6& &Guizhou CN-52& && &CN& &4.6
然后利用gvisGeoMap命令创建对象,其参数注意要在regioin处填写CN表示中国地区,locationvar表示地理位置,而numvar表示取值
G1 = gvisGeoMap(data, locationvar='code', numvar='waste','province' options=list(region='CN',dataMode=&regions&,width=600, height=300))
然后即可绘制出相应图形
也可将图形对象导出成代码,然后复制到博客中显示如下
print(G1, 'chart')
载入中......
对论坛有贡献
根据规定进行奖励
总评分:&经验 + 80&
论坛币 + 60&
学术水平 + 11&
热心指数 + 11&
信用等级 + 8&
本帖被以下文库推荐
& |主题: 22, 订阅: 22
& |主题: 57, 订阅: 83
& |主题: 306, 订阅: 119
如果该贴对您有些许帮助,希望你能回复一下或者评一下热心指数!谢谢!
知道ggplot很强大,但是第一次知道还能用ggplot画地图。看看是不是比maptool之类的地图工具方便。
I like ggplot2!
感觉还是ggmap方便,可以直接把谷歌地图下下来
个人主页,欢迎订阅/
谢谢LZ分享,学习一下!
关注,赞原创 内容的贡献!
密码被盗??
看看是咋样
一份耕耘,一份收获。
用ggplot2包来绘制地图
初级热心勋章
初级热心勋章
初级信用勋章
初级信用勋章
中级热心勋章
中级热心勋章
无限扩大经管职场人脉圈!每天抽选10位免费名额,现在就扫& 论坛VIP& 贵宾会员& 可免费加入
加入我们,立即就学扫码下载「就学」app& Join us!& JoinLearn&
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
京ICP证090565号
京公网安备号
论坛法律顾问:王进律师苏建冲: R时代,你要怎样画地图? | 统计之都 (中国统计学门户网站,免费统计学服务平台)ggplot2学习笔记:画地图
①地图数据
以中国地图为例,下载最新的ArcGIS矢量地图数据,这种地图数据包含了很多信息,这是画地图的基础数据。下载地址:
②需要装载的包
library(maptools)
library(ggplot2)
library(plyr)
③参考资料
这两篇文章写得很详细,介绍了用ggplot2结合地图数据绘制地图的方法,但是其中的代码有些错误,下面代码中会有说明。
2、画地图的代码
#读取地图文件
china_map&-readShapePoly("d:/R分析/地图/Lambert/省级行政区.shp")
#提取用于绘图的地图数据
x&-china_map@data
#提取33个省市的数据,这里和网上教程不一样,seq(0,33),上面的文章写的是seq(0,924),用924会出错。并且上面地址下载的地图数据,用id.1来存储各省市代码,不是id,所以需要将id改成id.1,用来合并数据
xs&-data.frame(x,id.1=seq(0:33)-1)
#将地图数据转换为数据框
china_map1&-fortify(china_map)
#添加一个id.1字段,用于和上面的xs(各省市数据)糅合,合并
china_map1$id.1&-china_map1$id
#去掉china_map1中的id字段,避免在糅合数据的时候,出现两个相同字段id和id.1,保证只用id.1来糅合
china_map2&-china_map1[,-7]
#糅合地图数据
china_mapdata&-join(china_map2, xs, type
ggplot(china_mapdata, aes(x = long, y =
lat, group = group,fill=NAME))+
geom_polygon( )+
geom_path(colour = "grey40")+
scale_fill_manual(values=colours(),guide=FALSE)
效果如下:
接下来的事情,就是如何将需要的数据显示在地图上。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。【R】如何用R绘制地图 - 推酷
【R】如何用R绘制地图
本文主要包含三种绘制地图的方法:绘制基础地图、基于空间数据格式(shapefile)绘制地图以及如何调用百度地图和谷歌地图的数据来绘制地图。
从map()包里获取地图数据,用geom_polygon()(可以用颜色填充)或者geom_path()(不能填充)绘制。
#install.packages(&ggplot2&)
#install.packages(&maps&)
library(ggplot2)
library(maps) # 为了获取数据
# ATTENTION: maps v3.0 has an updated 'world' map.
# Many country borders and names have changed since 1990. #
# Type '?world' or 'news(package=&maps&)'. See README_v3. #
# 美国地图数据
states_map &- map_data(&state&)
head(states_map)
lat group order
region subregion
## 1 -87.68
## 2 -87.49
## 3 -87.49
## 4 -87.39
## 5 -87.65
## 6 -87.65
# geom_polygon()
ggplot(states_map, aes(x=long,y=lat,group=group)) +
geom_polygon(fill=&white&,colour=&black&) +
labs(title = &USA Map&)
# 中国地图
library(mapdata)
map(&china&, col = &red4&, ylim = c(18,54), panel.first = grid())
title(&China Map&)
# 世界地图数据
world_map &- map_data(&world&)
head(world_map)
lat group order region subregion
## 1 -69.00
## 2 -69.00
## 3 -69.53
## 4 -70.49
## 5 -70.97
## 6 -70.07
#sort(unique(world_map$region))
# 绘制指定区域的地图数据
# 绘制欧洲足球五大联赛所在地
euro &- map_data(&world&, region = c(&UK&,&France&, &Spain&,&Germany&, &Italy&))
ggplot(euro, aes(x=long, y = lat, group=group,fill=region)) +
geom_polygon(colour=&black&) +
scale_fill_brewer(palette = &Set2&) +
scale_y_continuous(limits=c(40,60)) +
scale_x_continuous(limits=c(-25,25)) +
labs(title = & Euorpe's Big Five Football Leagues&)
绘制等值区域图
当我们创建一个地图后,如果根据变量值对不同区域填充不同的颜色呢?
很简单,只要把变量值和地图数据合并在一起,然后把一个变量映射到fill上就可以了。
head(USArrests) # 1973年的数据
Murder Assault UrbanPop Rape
## Alabama
## Arizona
## Arkansas
## California
## Colorado
crimes &- data.frame(state= tolower(rownames(USArrests)), USArrests)
# 合并数据集
crime_map &- merge(states_map,crimes,by.x=&region&,by.y = &state&)
# head(crime_map)
library(plyr) # 加载数据清洗软件包
## Attaching package: 'plyr'
## The following object is masked from 'package:maps':
# 按照 group, order排序
crime_map &- arrange(crime_map,group,order)
# head(crime_map)
ggplot(crime_map, aes(x=long,y=lat, group = group, fill = Assault)) +
geom_polygon(colour = &black&) +
coord_map(&polyconic&) +
labs(title = &USA Map&)
# 更改配色
ggplot(crimes, aes(map_id = state, fill = Assault)) +
geom_map(map = states_map, colour = &black&) +
scale_fill_gradient(low=&#FFFFFF&, high = &#BB4444&) +
expand_limits(x = states_map$long, y = states_map$lat)
对于犯罪率这个指标,从上图可以看出采用连续取值的方法无法很好地反映出信息,这时采用离散取值反而更容易解释。
# 离散颜色标度
qa &- quantile(crimes$Assault, c(0,0.2,0.4,0.6,0.8,1.0))
98.8 135.0 188.8 254.2 337.0
# 新增一个分位数类别变量
crimes$Assault_q &- cut(crimes$Assault, qa, labels = c(&0-20%&, &20-40%&,&40-60%&,
&60-80%&, &80-100%&),
include.lowest = TRUE)
states &- ddply(states_map, .(region),summarise, lat = mean(lat,na.rm = TRUE),
long = mean(long,na.rm = TRUE))
crimes &- merge(crimes, states, by.x = &state&, by.y = &region&)
# 绘制离散分类地图
p &- ggplot(crimes, aes(map_id = state, fill = Assault_q)) +
geom_map(map = states_map, colour = &black&) +
scale_fill_brewer(palette = &Set2&) +
expand_limits(x = states_map$long, y =states_map$lat) +
coord_map(&polyconic&) +
labs(fill=&Assault Rate\nPercentile&, title = &USA Map&)
# 加入州名对应的标签
p + geom_text(aes(x=long,y=lat,label=state),size=3,colour=&black&) +
theme_bw() +
xlab(&long&) + ylab(&lat&)
# 如果你想去掉网格线和坐标框,那么接着往下翻!
# 创建空白背景地图
theme_clean &- function(base_size=12){
require(grid)
theme_grey(base_size)
axis.title = element_blank(),
axis.text = element_blank(),
panel.background = element_blank(),
panel.grid = element_blank(),
axis.ticks.length = unit(0, &cm&),
axis.ticks.margin = unit(0, &cm&),
panel.margin = unit(0, &lines&),
plot.margin = unit(c(0,0,0,0), &lines&),
complete = TRUE
p + theme_clean()
## Loading required package: grid
基于空间数据格式(shapefile)创建地图
ESRI公司的Shapefile文件是描述空间数据的几何和属性特征的矢量数据结构的一种格式。 一个Shapefile文件最少包括三个文件:主文件(.shp):存储地理要素的几何图形的文件; 索引文件(.shx):存储图形要素与属性信息索引的文件; dBASE表文件(*.dbf):存储要素信息属性的dBase表文件。
除此之外还有可选的文件包括:空间参考文件(.prj), 几何体的空间索引文件(.sbn 和 .sbx), 只读的Shapefiles的几何体的空间索引文件(.fbn 和 .fbx), 列表中活动字段的属性索引(.ain 和 .aih), 可读写Shapefile文件的地理编码索引(.ixs), 可读写Shapefile文件的地理编码索引(.mxs), dbf文件的属性索引(.atx), 以XML格式保存元数据(.shp.xml), 用于描述.dbf文件的代码页,指明其使用的字符编码的描述文件(*.cpg)。
需要注意的是,主文件是一个直接存取,变长记录的文件,其中每个记录描述一个实体的数据,我们称之为称为shape。
下面这个网站中可以下载全球各个国家完整的shapefile格式数据:
备注:慎用中国地图数据!
利用maptools()包中的readShapePoly()载入空间数据文件,用fortify()把数据转化成数据框的格式,然后画图。
library(maptools)
## Loading required package: sp
## Checking rgeos availability: TRUE
setwd(&~/Desktop/dataset/map&)
# 载入空间数据并转化成数据框
china_shp &- readShapePoly(&china/bou2_4p.shp&)
# 返回一个 SpatialPolygonsDataFrame 对象
# str(china_shp)
china_map &- fortify(china_shp)
## Regions defined for each Polygons
# 绘制中国地图
p &- ggplot(china_map, aes(x = long, y = lat, group = group)) +
geom_path() +
labs(title = &China Map&)
# 绘制空白背景的地图
p + theme_clean()
这里我们只利用了shapefile中最基本的边界信息,还没有对地理信息数据进行更进一步的分析。我们还可以将不同格式的地理数据整合起来,例如如何在上面的地图上绘制出我国的铁路、水系分布等内容。
调用百度地图和谷歌地图的数据
接下来,我将介绍如何从百度地图和谷歌地图中获取心仪的地图数据信息。
library(devtools)
#install_github(&badbye/baidumap&)
library(baidumap)
# 随便输入几个经纬度坐标
lon = matrix(c(117.930, 117.945, 117.210,
117.060), byrow=T, ncol=2)
# 将经纬度坐标转换成真实地理信息
location = getLocation(lon, formatted = T)
lon=117.9378;lat=24.5573 lon=117.93291;lat=24.57745
## &福建省厦门市海沧区坂南路& &福建省厦门市海沧区大溪路&
lon=117.2353;lat=24.6421
lon=117.0589;lat=24.7486
&福建省漳州市南靖县&
&福建省漳州市南靖县X607&
# 获取厦门大学经纬度坐标,返回json格式文件
getCoordinate('厦门大学') # json
## &{\&status\&:0,\&result\&:{\&location\&:{\&lng\&:118.,\&lat\&:24.},\&precise\&:0,\&confidence\&:30,\&level\&:\&商圈\&}}&
ad &- getCoordinate('厦门大学', formatted = TRUE)
names(ad) &- NULL
# 绘制地图
# 自己修改了一些参数,并将修改后的package挂在github上,所以我选择从github上安装ggmap包。
# install_github(&fibears/ggmap&)
library(ggmap)
p &- getBaiduMap(&厦门市思明区&,zoom = 12)
## Map from URL : http://api./staticimage?width=400&height=400&center=118.,24.&zoom=12&scale=2
ggmap(p) +
geom_point(aes(x=ad[1], y =ad[2]))
当当当,奇迹发生了——厦门大学位于海中央!这是因为谷歌地图和百度地图经纬度坐标存在一定的偏差, 而getBaiduMap()软件包的作者利用了ggmap()包中坐标转换的思想,这导致最终绘制出来 的图形不准确。因此,我们还是考虑转入谷歌阵营。
首先介绍一个概念:火星坐标系统
火星坐标系统是一种国家保密插件,也叫做加密插件或者加偏或者SM模组,其实就是对真实坐标系统进行人为的加偏处理,按照特殊的算法,将真实的坐标加密成虚假的坐标,而这个加偏并不是线性的加偏,所以各地的偏移情况都会有所不同。而加密后的坐标也常被人称为火星坐标系统。
所有的电子地图、导航设备,都需要加入国家保密插件。第一步,地图公司测绘地图,测绘完成后,送到国家测绘局,将真实坐标的电子地图,加密成“火星坐标”,这样的地图才是可以出版和发布的,然后才可以让GPS公司处理。第二步,所有的GPS公司,只要需要汽车导航的,需要用到导航电子地图的,都需要在软件中加入国家保密算法,将COM口读出来的真实的坐标信号,加密转换成国家要求的保密的坐标。这样,GPS导航仪和导航电子地图就可以完全匹配,GPS也就可以正常工作了。
由于谷歌地图被GFW屏蔽了,所以想调用其API需要翻墙。
主要有以下几个步骤:
安装SSLedge在RStudio中更改proxy
首先,我们先简单认识下http和https:
http是普通超文本协议,其信息室明文传送,而https就是安全超文本传输协议,需要证书和提供安全连接,https是嵌套了SSL加密的http连接,其内容会由SSL先加密,然后再传送。
为了更方便地使用网络,我将只使用https代理,对于Http类型的网站使用直接连接的方式。
# 查看信息
Sys.getenv()
# 两种方式设置proxy
# 利用Sys.setenv()
Sys.setenv(https_proxy=&https://user:password@ip:port&)
# 修改.Renviron 文档
接下来我们来看看如何调用谷歌地图的API来绘图。
# 可以直接在cran中下载package
# install_github(&fibears/ggmap&) # 自己修改了部分链接代码,所以我选择从github下载
# library(ggmap)
setwd(&~/Desktop/dataset/others&)
# 获取坐标及地图数据
ad1 &- as.numeric(geocode(&福建省厦门市思明南路422&,source = &google&))
## Information from URL : /maps/api/geocode/json?address=%E7%A6%8F%E5%BB%BA%E7%9C%81%E5%8E%A6%E9%97%A8%E5%B8%82%E6%80%9D%E6%98%8E%E5%8D%97%E8%B7%AF422&sensor=false
xmu &- get_map(&厦门市思明区&,zoom = 13, maptype = &roadmap&)
## Map from URL : /maps/api/staticmap?center=%E5%8E%A6%E9%97%A8%E5%B8%82%E6%80%9D%E6%98%8E%E5%8C%BA&zoom=13&size=640x640&scale=2&maptype=roadmap&language=en-EN&sensor=false
## Information from URL : /maps/api/geocode/json?address=%E5%8E%A6%E9%97%A8%E5%B8%82%E6%80%9D%E6%98%8E%E5%8C%BA&sensor=false
ggmap(xmu, extent = &normal&) +
geom_point(aes(x=ad1[1], y =ad1[2]))
需要注意的是,利用geocode函数检索经纬度数据时,最好选择使用道路数据,这样可以提高检索的准确率。
最后引用肖凯大神博客中的一个案例:本例是从地震信息网获取最近一周的地震数据,得到其经纬度,然后以散点形式绘制在google地图上,同时也显示地震发生的密度估计。
# 加载扩展包
# install.packages(&animation&)
# install.packages(&XML&)
library(ggmap)
library(animation)
library(XML)
# 从网页上抓取数据,并进行清理
webpage &-'/datashare/globeEarthquake_csn.html'
tables &- readHTMLTable(webpage,stringsAsFactors = FALSE)
raw &- tables[[6]]
data &- raw[-1,c('V1','V3','V4')]
names(data) &- c('date','lan','lon')
data$lan &- as.numeric(data$lan)
data$lon &- as.numeric(data$lon)
data$date &- as.Date(data$date,
&%Y-%m-%d&)
# 用ggmap包从google读取地图数据,并将之前的数据标注在地图上。
ggmap(get_googlemap(center = 'china', zoom=4,maptype='terrain'),extent='device') +
geom_point(data=data,aes(x=lon,y=lan),colour = 'red',alpha=0.7) +
stat_density2d(aes(x=lon,y=lan,fill=..level..,alpha=..level..),
size=2,bins=4,data=data,geom='polygon')+
theme(legend.position = &none&)
## Map from URL : /maps/api/staticmap?center=china&zoom=4&size=640x640&scale=2&maptype=terrain&sensor=false
## Information from URL : /maps/api/geocode/json?address=china&sensor=false
## Warning: Removed 47 rows containing non-finite values (stat_density2d).
## Warning: Removed 47 rows containing missing values (geom_point).
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 ggplot2 地图 的文章

 

随机推荐