zoukankan      html  css  js  c++  java
  • 用R语言编程代写制作交互式图表和地图

    原文链接:http://tecdat.cn/?p=8032

    可以直接从R / RStudio制作在线交互式图表和地图。

    配置

    启动RStudio,创建一个新的RScript,然后将工作目录设置为下载的数据文件夹。 

    使ggplot2图表成为交互式Plotly图表

    制作交互式 点线图

    以下代码将安装并加载程序包(该程序还将自动加载ggplot2),加载readrdplyr,然后加载我们之前使用的食品券数据。

    # install and load plotly, load readr and dplyr
    install.packages("plotly")
    library(plotly)
    library(readr)
    library(dplyr)

     将其转变为Plotly图。

    # load data
    food_stamps <- read_csv("food_stamps.csv")
    
    # dot-and-line chart
    food_stamps_chart <- ggplot(food_stamps, aes(x = year, y = participants)) +
      xlab("Year") +
      ylab("Participants (millions)") +
      theme_minimal(base_size = 14, base_family = "Georgia")
      geom_point() +
      geom_line()
    
    plot(food_stamps_chart)

    如前所述,这会将ggplot2图表保存在您的环境中。以下代码将其转换为“绘图”图表,该图表应显示在Viewer右下角的标签中:

    当您将鼠标悬停在默认图表上时,一些控件会显示在右上角。 

    要重新格式化工具提示,我们需要同时修改ggplot2plotly代码

    最终layout功能中的代码代码为工具提示设置样式,使用白色背景并更改字体系列,使其与图表的其余部分保持一致。 将代码插入页面并按如下所示进行编辑:

    <div class="container">
    
        <iframe width="100%" height="450" frameborder="0" scrolling="no" src="food_stamps_interactive.html"></iframe>
    
    </div> <!-- /.container -->

    结果应该是:

    制作疾病和民主散点图的交互式版本

    此代码创建具有线性趋势线的基本散点图,而没有映射到点income_group的颜色:

    结果应该是:

    以下代码使用定性的ColorBrewer调色板为这些点创建此图表的版本,以由世界银行收入组为其着色。

    这是静态版本:

    这是交互式的:

    请注意,交互式ggplot版本未继承scale_color_brewer对静态ggplot图表中的图例中的项目进行排序的代码。

    但是我们可以通过首先运行以下代码来解决此问题:

    这将转换income_group为分类变量或factor,然后按其类别或级别的顺序对数据框进行排序。

    现在,像以前一样运行图表代码将可以固定交互式图表中图例中项目的顺序。

    制作交互式版本的加州幼儿园免疫接种热图

    这是 另一个示例。

    结果应该是:

    练习制作其他交互式图表

    在课堂上,在时间允许的情况下,我们将使用plotly 创建这些ggplot2图表的交互式版本:

    使用Leaflet制作地震风险图和地震图

     制作交互式在线地图的最广泛使用的JavaScript库。 

    # install and load leaflet and rdgal
    install.packages("leaflet")
    install.packages("rgdal")
    library(leaflet)
    library(rgdal)

     首先,让我们看看如何制作以伯克利为中心的基本Leaflet地图:

    该地图应显示在Viewer

    leaflet函数创建一个 地图。

     该addProviderTiles函数使用Leaflet Providers插件将各种图块添加到地图。 

    现在seismic使用rgdal中readOGR函数加载从shapefile 开始的地震地图所需的数据。

    提到的两个分别seismic指向文件夹和其中的shapefile。

    现在你应该在你的环境中调用的对象seismic是一个SpatialPolygonsDataFrame

    我们还可以直接从美国地质调查局地震API中加载地震数据,如有关查找和下载数据的课程说明中所述:

    使用该网址,我们加载了自1960年初以来6级及以上的地震,地震发生在美国大陆地理中心的6,000公里半径内。

    让我们看一下seismic数据摘要:

    # view summary of seismic_risk data
    summary(seismic)

    定义破坏性地震的年度风险的数据是可变的ValueRange。但是,此合并变量的类别顺序不正确。要更正此问题,我们应将变量从文本转换为factor,或levels按正确的顺序进行分类。

    现在,类别应按正确的顺序排列:

    请注意,要运行dplyr代码以mutate

    接下来,我们将地震风险数据加载到 地图中:

    现在,您应该leaflet在环境中看到一个类型的对象。

    现在,我们只需两行代码就可以创建具有两层的地图:

    结果应该是:

    该函数colorFactor将命名的ColorBrewer调色板分配给类别变量。

    该函数addPolygons将多边形添加到地图:不stroke = FALSE给它们轮廓;fillOpacity = 0.7使它们稍微透明;color = ~pal(ValueRange))使用调色板根据ValueRange数据中的值为多边形着色。

    如果您有任何疑问,请在下面发表评论。   

  • 相关阅读:
    cocos2dx打飞机项目笔记七:各种回调:定时器schedule、普通回调callFunc、菜单回调menu_selector、事件回调event_selector
    cocos2dx打飞机项目笔记六:GameScene类和碰撞检测 boundingbox
    [Redis] 手动搭建标准6节点Redis集群(docker)
    [JavaSE 源码分析] 关于HashMap的个人理解
    [leetcode 周赛 150] 1161 最大层内元素和
    [leetcode 周赛 150] 1160 拼写单词
    [leetcode 周赛 149] 1157 子数组中占绝大多数的元素
    [leetcode 周赛 149] 1156 单字符重复子串的最大长度
    [leetcode 周赛 149] 1155 掷骰子的N种方法
    [leetcode 周赛 149] 1154 一年中的第几天
  • 原文地址:https://www.cnblogs.com/tecdat/p/11741492.html
Copyright © 2011-2022 走看看