热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

R(七):R开发实例-map热力图

第四章通过REmap包完成基于map分布图示例,前面提到REmap基于Echart2.0,一方面在移动终端适应效果差,另一方面REmap提供的热力图仅支持全国及省市大版块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
    = "

    "utf-8\">



    "main\">






    "
    )
    View Code

 

 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);
    }
    View Code
  •  通过FastRWeb框架调用R脚本成功后,返回的是在/var/www/html目录下生成的文件名
  • client再次发起请求,调用html文件
  • 注意: 在/var/www/html 目录下部署脚本引用的 js 文件

 


推荐阅读
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了解决IE678伪类不兼容问题的方法,包括少用CSS3和HTML5独有的属性,使用CSS hacker,使用last-child清除浮动、批量添加标签、去掉list item最后一个的border-right等技巧。同时还介绍了使用after清除浮动时加上IE独有属性zoom:1的处理方法。另外,本文还提到可以使用jQuery代替批量添加标签的功能,以及使用负边距和CSS2选择器element+element去掉list item最后一个的border-right的方法。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
author-avatar
浪之音_544
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有