R(七): R开发实例-map热力图
第四章通过REmap包完成基于map分布图示例,前面提到REmap基于Echart2.0, 一方面在移动终端适应效果差,另一方面REmap提供的热力图仅支持全国及省市大版块map,基于上面的原因,参考 http://echarts.baidu.com/examples.html#chart-type-heatmap ,利用第四章清洗后的数据结合Echart3热力图控件开发完整可缩放地图的热力分布。
目录:
- 效果图
- 在线构建Echart3脚本包
- R热力图页面模板
- R脚本
效果图:
在线构建Echart3脚本包:
- 在浏览器打开 http://echarts.baidu.com/builder.html, 选择 "下载" -->"在线构建", 在打开的页面选择要打包的图表,点击 “下载”
- 简单起见,你可以选择所有控件后打包, build 完后保存为 “echarts3.min.js”
R热力图页面模板:
- 参考Echart 热力图文档,在R脚本定义模板及Class, 保存命名:DemoTemp.R
- 示例代码如下:
setClass("my.map",
representation(
id = "character",
option = "character",
content = "character"
)) my.mapH = function(data) { if (.Platform$OS.type == "windows") {
locate = Sys.getlocale("LC_CTYPE")
Sys.setlocale("LC_CTYPE", "eng")
} if (!is.data.frame(data)) {
stop("Map data should be a data frame.")
} if (ncol(data) < 3 | nrow(data) == 0) {
stop("Data should have at least 3 columns and 1 row")
} if (!is.numeric(data[1, 1]) |
!is.numeric(data[1, 2]) |
!is.numeric(data[1, 3])) {
data[, 1] = as.numeric(data[, 1])
data[, 2] = as.numeric(data[, 2])
data[, 3] = as.numeric(data[, 3])
} heatdata = apply(data, 1, function(x) {
out = sprintf('[%s,%s,%s]', x[1], x[2], x[3])
return(out)
}) heatdata = paste(heatdata, collapse = ",\n") ### write remap object
output = new("my.map")
output@id = paste('ID', format(Sys.time(), "%Y%m%d%H%M%S"),
round(proc.time()[3] * 100), sep = "_") output@option = html.data.H$option
head = html.data.H$head
foot = html.data.H$foot if (.Platform$OS.type == "windows") {
Sys.setlocale("LC_CTYPE", "chs")
} output@option = sub("forChange", "һ", output@option) output@option = sub("heatMapData",
heatdata, output@option) ## optionNameData
output@option = sub("optionNameData",
paste0("option", output@id), output@option)
outputFoot = sub("optionNameData",
paste0("option", output@id), foot) output@option = strsplit(output@option, "kkkmmm")[[1]][2]
output@content = paste(head, output@option, outputFoot, sep = "\n") if (.Platform$OS.type == "windows") {
Sys.setlocale("LC_CTYPE", locate)
}
return(output)
} html.data.H = list(
head = "<html>
<head>
<meta charset=\"utf-8\">
<style type=\"text/css\">
body {
margin: 0;
}
#main {
height: 100%;
}
</style>
</head>
<body>
<div id=\"main\"></div>
<script src=\"./js/echarts.js\"></script>
<script src=\"./js/bmap.js\"></script>
<script src = \"http://api.map.baidu.com/api?v=2.0&ak=密钥\"></script>
<script>
var myChart = echarts.init(document.getElementById(\"main\")); ",
option = "forChangekkkmmm
var heatData = [heatMapData];
var optionNameData =
{
animation: false,
bmap: {
center: [103.855096, 36.056805],
zoom: 5,
min: 4,
max:12,
roam: true
},
visualMap: {
show: true,
top: 'top',
min: 1,
max: 50,
seriesIndex: 0,
calculable: true,
inRange: {
color: ['blue', 'blue', 'green', 'yellow', 'red']
}
},
series: [{
type: 'heatmap',
coordinateSystem: 'bmap',
data: heatData,
pointSize: 6,
blurSize: 8
}]
}",
foot = ";
myChart.setOption(optionNameData);
</script>
</body>
</html>"
)
R脚本:
- R脚本代码,demo.rda 为清洗后保存的数据,示例
run <- function(...) {
map_name <- my.writeMapH()
out(map_name)
} my.writeMapH <- function() { path = c("/var/www/html")
file_name = paste0("3.0/Demo")
full_path = paste0(path, "/", file_name, ".html")
if (file.exists(full_path)) {
return(file_name)
} source("/var/FastRWeb/web.R/DemoTemp.R")
tmp <- load("/var/FastRWeb/web.R/demo.rda")
data <- data.frame(pdata$lon,pdata$lat,c(1))
out <- my.mapH(data) writeLines(out@content, full_path, useBytes = T)
return(file_name);
} - 通过FastRWeb框架调用R脚本成功后,返回的是在/var/www/html目录下生成的文件名
- client再次发起请求,调用html文件
- 注意: 在/var/www/html 目录下部署脚本引用的 js 文件
R(七): R开发实例-map热力图的更多相关文章
- R(四): R开发实例-map分布图
前几章对R语言的运行原理.基本语法.数据类型.环境部署等基础知识作了简单介绍,本节将结合具体案例进行验证测试. 案例场景:从互联网下载全国三甲医院数据,以地图作为背景,展现各医院在地图上的分布图.全国 ...
- 工业级GBDT算法︱微软开源 的LightGBM(R包正在开发....)
看完一篇介绍文章后,第一个直觉就是这算法已经配得上工业级属性.日前看到微软已经公开了这一算法,而且已经发开python版本,本人觉得等hadoop+Spark这些平台配齐之后,就可以大规模宣传啦~如果 ...
- C#软件开发实例.私人订制自己的屏幕截图工具(七)加入放大镜的功能
上一篇:C#软件开发实例.私人订制自己的屏幕截图工具(六)加入配置管理功能 因为截图时可能须要精确截取某一部分,所以须要放大镜的功能,这样截取的时候才更easy定位截图的位置. 加入PictureBo ...
- Android音乐播放器的开发实例
本文将引导大家做一个音乐播放器,在做这个Android开发实例的过程中,能够帮助大家进一步熟悉和掌握学过的ListView和其他一些组件.为了有更好的学习效果,其中很多功能我们手动实现,例如音乐播放的 ...
- Android开发实例之miniTwitter登录界面的实现
原文: http://www.jizhuomi.com/android/example/134.html 本文要演示的Android开发实例是如何完成一个Android中的miniTwitter登录界 ...
- Android开发实例详解之IMF(Android SDK Sample—SoftKeyboard)
本博前面的文章介绍了Android开发环境的搭建和模拟器的常用操作.本次,将以Android Sample中经典的SoftKeyboard项目为例,详细解析Android上一个小型项目的开发过程和注意 ...
- 持久化框架Hibernate 开发实例(一)
1 Hibernate简介 Hibernate框架是一个非常流行的持久化框架,其中在web开发中占据了非常重要的地位, Hibernate作为Web应用的底层,实现了对数据库操作的封装.HIberna ...
- [转贴]JAVA:RESTLET开发实例(二)使用Component、Application的REST服务
上一篇文章,我们介绍了基于JAX-RS的REST服务,本篇文章我们介绍不基于JAX-RS的模式.JAX-RS其实就是一个简单的 Application服务.和我们接下来介绍的Application基本 ...
- Android 应用开发实例之情景模式
2013-07-01 Android 应用开发实例 1. 情景模式 使用TabHost来实现主界面的布局. 设置一组RadioButton来切换不同的情景模式. 对比普通情景模式,定时情景模式需要加上 ...
随机推荐
- WPF Step By Step 自定义模板
WPF Step By Step 自定义模板 回顾 上一篇,我们简单介绍了几个基本的控件,本节我们将讲解每个控件的样式的自定义和数据模板的自定义,我们会结合项目中的具体的要求和场景来分析,给出我们实现 ...
- highcharts 的使用实例:待写
http://www.hcharts.cn/demo/index.php 方法一:在Axis(包括xAxis和yAxis)有一个属性tickInterval,number类型,表示间隔,也就是间隔多少 ...
- "Your local changes to the following files would be overwritten by merge" on git
运行: git merge --ff origin/master 得到错误信息: error: Your local changes to the following files would be o ...
- jquery-ui 进度条
<!DOCTYPE html> <html> <head> <meta charset="utf8" /> <title> ...
- dedecms 列表页 list 判断flag给定指定样式 (本地测试有效)
{dede:list pagesize='10'} [field:array runphp='yes'] if (@me['flag']=='a') @me=' <a class="n ...
- UI学习笔记---第八天
UINavigationController的用法 界面间传值 UInavigationController继承于UIViewController,以栈的方式管理所控制的师徒控制器,至少要有一个被 ...
- 274. H-Index
Given an array of citations (each citation is a non-negative integer) of a researcher, write a funct ...
- c语言中函数的递归
题目:用递归法把一个整数转换成字符串输出. 比较下面两种方法的不同: putchar(n%10+'0')的位置不同,造成输出结果的不同. 方法一: #include <stdio.h> v ...
- html--整站制作
1.样式初置 body,div,ul,ol,h1,h2,h3,h4,h5,p,form,input,textarea,select{margin:0;padding:0;} li{list-style ...
- 使用move_base导航 ---13
摘要: 原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/ 我们现在准备用move_base简单的移动机器人记住,一个“pose”在ros的意思是一个位置和 ...
