IT知识库 购物 网址 游戏 小说 歌词 快照 开发 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 编程 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> R语言 -> 中国主要城市天气可视化 -> 正文阅读

[R语言]中国主要城市天气可视化

中国主要城市天气可视化 REmap是ECharts中交互地图可视化功能的R接口,通过它可以直接使用R代码(而不必写JS代码)来实现交互地图可视化。本文将介绍如何使用REmap包实现全国主要城市天气可视化。
1 准备工作 1.1 安装R和RStudio
见R基础部分
1.2 安装REmap

library(devtools)
install_github('lchiffon/REmap')

请注意,以上命令默认你已经安装了devtools,如果你没有安装devtools,那么请先安装之。
1.3 准备三张天气图片
图片可以自行百度或者设计,或者直接引用我github上的图片。
图片链接地址https://github.com/wcc3358/ChinaWeatherVisualization
图片形式大致如下:

将天气数据做简化,简化后只有晴天、多云以及阴天三种。 2 载入REmap包

library(rvest) #用来爬取数据
library(REmap) #实现地图可视化
options(remap.js.web=T) 


设置options(remap.js.web=T)后,生成html将保存在当前工作目录,否则它会保存在默认的临时文件夹中。

3 爬取天气数据
选择中央气象台的天气数据,采用rvest包爬取天气数据:




website <- "http://www.nmc.cn/publish/forecast/china.html"
web <- read_html(website,encoding = "UTF-8") 
weather.data <- web %>% html_nodes("div.area ul li") %>% html_text()
fun <- function(x){
  temp  <- strsplit(x,split = "[\n]+")[[1]]  
  item <- gsub(pattern = "\\s+",replacement = "",x = temp)  
  res <- item[item!=""]
  res
}
weather.data <- sapply(weather.data,fun)
# 转置
weather.data <- t(weather.data)
# 重命名行和列
weather.data <- as.data.frame(weather.data,row.names=1:nrow(weather.data),stringsAsFactors=FALSE)
colnames(weather.data) <- c("area","weather","temperature")


4 数据整理
继续整理数据,生成衍生变量:weatherc

# 获取末尾的40个城市的记录
weather.data <- tail(weather.data,40)
# 提取天气中的前3个字儿
weather <- substr(weather.data$weather,1,3)
weather
#  [1] "多云"   "多云转" "多云"   "阵雨转" "阴转小" "晴转多"
#  [7] "晴"     "晴"     "晴"     "晴"     "晴转多" "多云"  
# [13] "晴转小" "阵雨转" "大雨"   "大雨转" "大雨转" "大雨"  
# [19] "大到暴" "小雨转" "晴"     "多云"   "阵雨"   "阴"    
# [25] "晴"     "多云"   "晴"     "多云"   "多云"   "小雨转"
# [31] "多云"   "阴转多" "中雨"   "小雨转" "阵雨转" "晴"    
# [37] "多云转" "晴转多" "晴"     "阴转小"


# 查出匹配字段的索引
ind1 <- grep("",weather)
ind20 <- grep("",weather)
ind21 <- grep("",weather)
ind2 <- c(ind20,ind21)
ind3 <- grep("",weather)

# 将各匹配字段赋对应的英文天气
weather.data$weatherc <- NA
weather.data$weatherc[ind1] <- "sunny"
weather.data$weatherc[ind2] <- "cloudy"
weather.data$weatherc[ind3] <- "rainy"

# 去掉了未能成功赋值的行,此处需要根据实际情况调整 weather.data <- weather.data[-19,]


整理后的数据如上,最后一列weatherc表示简化后的天气类型,即是sunny、cloudy还是rainy,其中小雨转多云、多云转晴这些天气状况直接就简化为rainy以及cloudy,简化后方便与准备工作3中所表示的三种天气图片相对应。
具体的代码不做详细分析,中间涉及到正则匹配和替换,如果你不了解正则,去百度搜搜三十分钟学会正则表达式,你就能大致明白。
5 可视化展示
可视化展示的三个步骤:
a. 采用get_city_coord获取城市的经纬度数据
b. 封装城市的图片以及标签信息
c. 采用remapB获做城市天气可视化展示

remapB(center = c(104.114129,37.550339),
       zoom = 5,
       color = "Bright",
       title = "",
       subtitle = "",
       markLineData = NA,
       markPointData = NA,
       markLineTheme = markLineControl(),
       markPointTheme = markPointControl(),
       geoData = NA)

remapB函数相关参数说明:
makePointData:城市相关信息,包括需要展示的天气状况图片以及文字信息 geoData:城市对应的经纬度 color:地图的主题颜色,有“Bright”, “Blue”, “light”, “dark”, “redalert”, “googlelite”, “grassgreen”, “midnight”, “pink”, “darkgreen”, “bluish”, “grayscale”, “hardedge”可选,示例见下文 - subtitle:副标题 makePointTheme:控制显示的图片的大小,显示效果等等 markLineData:标记线的数据 markLineTheme:标记线的主题 zoom: Bmap的大小缩放zoom:5国家数据 zoom:15 城市的数据


# 天气可视化展示
# remap.init()
geoData <- sapply(weather.data$area, get_city_coord)
geoData
# 香港      澳门      台北      北京      西青
# [1,] 114.17199 113.54940 121.52487 116.41355 117.01380
# [2,]  22.28109  22.19296  25.04218  39.91101  39.14744
# 天津      太原      沈阳      长春      上海
# [1,] 117.20591 112.55706 123.43897 125.33017 121.48024
# [2,]  39.09091  37.87689  41.81134  43.82178  31.23631
# 南京      杭州      合肥      南昌      济南
# [1,] 118.80289 120.16169 117.23545 115.86453 117.00132
# [2,]  32.06473  30.28006  31.82687  28.68767  36.67163
# 郑州      武汉      长沙      广州      深圳
# [1,] 113.63135 114.31183 112.94533 113.27079 114.06611
# [2,]  34.75349  30.59843  28.23397  23.13531  22.54851
# 中沙      海口     重庆      成都      贵阳      昆明
# [1,] 114.39999 110.20642 106.5572 104.07122 106.63682 102.83967
# [2,]  15.91595  20.05006  29.5710  30.57628  26.65275  24.88595
# 拉萨      西安      兰州      西宁      银川      台北
# [1,] 91.12103 108.94631 103.84069 101.78427 106.23898 121.52487
# [2,] 29.65009  34.34744  36.06731  36.62348  38.49239  25.04218

citynames <- dimnames(geoData)[[2]]
geoData <- as.data.frame(t(geoData),row.names = 1:nrow(geoData),stringsAsFactors = FALSE)
colnames(geoData) <- c("lon","lat")
geoData$city <- citynames
symbol <- paste0("image://https://raw.githubusercontent.com/wcc3358/ChinaWeatherVisualization/master/",weather.data$weatherc,".png")
tooltip <- paste(a=weather.data$area,"----------",weather.data$weather,weather.data$temperature,sep="<br>")
newdata <- data.frame(a=weather.data$area,symbol=symbol,tooltip=tooltip,stringsAsFactors=FALSE)
remapB(markPointData = newdata,
       geoData = geoData,
       color="Blue",
       title = "中国城市主要天气",
       markPointTheme = markPointControl(symbolSize=20,
                                         effectType='bounce',
                                         effect=T,
                                         color = "Random"))

展示结果如下图,图是动态的,天气图标会有一个浮动的效果,并且鼠标移动到天气图标上,会有一个文字效果展示具体的天气和温度数据。

6 小结
本文实现了全国主要城市天气可视化,这仅是REmap包的一个应用,它还可以用来做著名的百度迁徙图以及城市热力图等等。 REmap包的官方文档详见:https://github.com/Lchiffon/REmap
本文链接:http://www.cnblogs.com/homewch/p/5875148.html
github链接:https://github.com/wcc3358/ChinaWeatherVisualization
原文:http://mp.weixin.qq.com/s?__biz=MzI1NDMyMjgyMA==&mid=2247483793&idx=1&sn=a1126452e785422742952efadb0dd145&scene=4#wechat_redirect
上一篇文章      下一篇文章      查看所有文章
加:2016-09-17 14:52:53  更:2017-05-16 01:47:28 
 
  R语言 最新文章
R的方差检验
Solving.Differential.Equations.in.R笔记1
云铝项目市场调查分析
东深新能源科技有限公司
ggplot2图形解析
R语言学习
R包
学习笔记TF037:实现强化学习策略网络
dplyr包
R语言数据可视化0—ggplot2介绍
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年8日历
2018-8-15 3:17:19
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库