作者AndrewShi (没有你的我)
看板R_Language
标题[问题] ggplot叠图
时间Thu Oct 31 18:12:54 2019
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
[软体熟悉度]:
入门(写过其他程式,只是对语法不熟悉)
[问题叙述]:
各位大大好,小弟我想利用R画台湾附近台风的轨迹线,而上网查到一个利用ggplot画
轨迹线的程式范例,因此我就拿来用在我的资料上,然後也上网查了要如何用ggplot画台
湾地图,但ggmap现在似乎要付费才有办法使用,所以我找了另一个用ggplot画台湾地图
的范例,但因为在此之前都没用过ggplot画图过,所以不知道该如何将台风的轨迹线叠加
到台湾地图上,还请教大大们,谢谢。
台风轨迹线资讯和台湾地图的档案皆放在这里:
http://0rz.tw/JI056
[程式范例]:
library(csv)
library(ggplot2)
library(dplyr)
library(dplyr)
library(stringr)
library(data.table)
library(maptools)
library(knitr)
library(kableExtr)
#读取台风资料
typhoon <- read.csv("C:\\Users\\TOM\\Desktop\\typhoon.csv")
View(typhoon)
typhoon <- typhoon %>% group_by(CycloneNo) %>%
mutate(state=case_when(StepNo==1 ~ "Start",
StepNo==max(StepNo)~ "End",
T ~ "NA"))
View(typhoon)
#画轨迹线
ggplot(typhoon,aes(x=LongE,y=LatN,group=CycloneNo,color=as.factor(CycloneNo)))
+
geom_path() +
geom_point(data=typhoon %>%
filter(state!="NA"),aes(fill=state,shape=state),size=2 ) +
geom_text(data=typhoon %>%
filter(state=="Start"),aes(label=CycloneNo),color="black",vjust=0,hjust=1) +
guides(colour=F)
#画台湾地图
taiwan_shp <-
readShapeSpatial("C:\\Users\\TOM\\Desktop\\TWN_adm2\\TWN_adm2.shp")
taiwan_map <- fortify(taiwan_shp)
map <- ggplot(taiwan_map, aes(x = long, y = lat, group=group)) +
geom_path() +
coord_map()
[环境叙述]:
画出来的轨迹线和台湾地图分别为下面这两张图,而要叠在一起我想两张图的坐标轴应该
要一致才有办法叠在一起,但我不知道该如何将两者的经纬度调成一样和叠图的设定。
https://imgur.com/yrAJzzn
https://imgur.com/hUTzDvA
[关键字]:
ggplot 叠图 轨迹线 地图
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.122.212.62 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1572516776.A.E5D.html
1F:→ andrew43: 先画好台湾後面 +geom_path(aes(略), data = pyphoon)10/31 19:06
2F:推 cywhale: 推荐sf twm = sf::st_read("adm2/TWN_adm2.shp")10/31 20:52
3F:→ cywhale: ggplot()+geom_sf(data=twm)+geom_path(data=typhoon,...10/31 20:53
5F:→ AndrewShi: andrew大是指改成这样吗??但改成这样会有错误讯息 10/31 23:07
7F:→ AndrewShi: 我用了c大的写法就可以了,感谢andrew大和c大~10/31 23:31
8F:→ AndrewShi: 另外想再请教一个问题,如何我想在台湾的中心点(给定10/31 23:39
9F:→ AndrewShi: 一个经纬度位置)画一个半径300km的空心圆,我可以朝10/31 23:39
10F:→ AndrewShi: 哪个参数设定去想呢??10/31 23:39
11F:推 locka: geom_circle() 不要背景颜色就是空心圆了11/01 00:17
12F:推 cywhale: 也可用sf::st_buffer画圆,但单位要转换一下 crs也要设 11/01 00:34
13F:推 andrew43: 我的 “略” 不是留空白啊 XD。c 板主已经清楚说明了, 11/01 10:55
14F:→ andrew43: 而我的意思和他相同。11/01 10:55
15F:→ AndrewShi: 谢谢l大和c大,我这几天研究看看11/02 22:52
16F:→ AndrewShi: andrew大~了解,再次谢谢你11/02 22:53
想再请教各位大大一个问题(因考虑内容类似就不另再发文),如果我只想抽出影响时间
有持续达到18小时以上(当天日期"时"包含0.6.12.18)的时间出来的话,想请教我写的
程式码该如何修改才正确呢??
※ 编辑: AndrewShi (1.200.205.107 台湾), 11/06/2019 15:49:00