利用gganimate可视化R-Ladies发展情况

2023-11-05


作者简介Introduction

taoyan:R语言中文社区特约作家,伪码农,R语言爱好者,爱开源。

个人博客: https://ytlogos.github.io/

公众号:生信大讲堂


往期回顾

ggplot2学习笔记系列之主题(theme)设置

用circlize包绘制circos-plot

利用ggseqlogo绘制seqlogo图

一篇关于国旗与奥运会奖牌的可视化笔记

简介

这篇博客主要基于d4tagirl(https://d4tagirl.com/2017/05/how-to-plot-animated-maps-with-gganimate),稍微有所修改。

数据加载

library(pacman)

p_load(tidyverse, gganomate, maps, ggthemes)

rladies <- read_csv(url("https://raw.githubusercontent.com/d4tagirl/R-Ladies-growth-maps/master/rladies.csv"))%>%

select(-1)

head(rladies)


## # A tibble: 6 x 7

##   screen_name     location     created_at followers age_days     lon   lat

##   <chr>           <chr>        <date>         <int>    <dbl>   <dbl> <dbl>

## 1 RLadiesSF       San Francis~ 2012-10-15       916     1673 -122     37.8

## 2 RLadiesNYC      New York     2016-09-01       309      256 - 74.0   40.7

## 3 RLadiesIstanbul <U+0130>stanbul, T~ 2016-09-06       436      251   29.0   41.0

## 4 RLadiesBCN      Barcelona, ~ 2016-10-11       377      216    2.17  41.4

## 5 RLadiesColumbus Columbus, OH 2016-10-04       179      223 - 83.0   40.0

## 6 RLadiesBoston   Boston, MA   2016-09-06       259      251 - 71.1   42.4

可视化

主要是根据地理位置信息映射到地图上

fig.height=18}

ggplot()+

borders("world", color="gray85", fill="grey80")+

geom_point(data = rladies, aes(lon, lat, size=followers), color="purple", alpha=0.5)+

scale_size_continuous(range = c(8, 24), breaks = c(250, 500, 750, 1000))+

labs(size="Followers", title="                                             The development of R-Ladies’ Twitter accounts",x=NULL,y=NULL)+

theme(text = element_text(family = "Times New Roman", color = "#EEEEEE"),

plot.title = element_text(size=40,color = "#f9ba00"),

plot.subtitle = element_text(size=14),

axis.ticks = element_blank(),

axis.text = element_blank(),

panel.grid = element_blank(),

panel.background = element_rect(fill="#333333"),

plot.background = element_rect(fill = "#333333"),

legend.position = c(0.18,0.36),

legend.background = element_blank(),

legend.key = element_blank(),

legend.text = element_text(size = 28),

legend.title = element_text(size=28, color = "#f9ba00"))+

annotate(geom = "text",

label="Made by Logos ytlogos.github.io\nOriginally from d4tagirl https://d4tagirl.com",

x=70, y=-55, size=10, family="Helvetica Black", color="#f9ba00", hjust="left")

动画展示

为了利用gganimate进行动态展示,需要构建一个映射变量:时间。同时为了使得可视化开始和结尾呈现的是空白,又构建了两个空白图层   

ghost_points_ini <- tibble(created_at=as.Date("2011-09-01"), followers=0, lon=0, lat=0)

ghost_points_fin <- tibble(created_at=seq(as.Date("2017-05-16"), as.Date("2017-05-30"),by="days"), followers=0, lon=0,lat=0)

添加frame映射

map <- ggplot()+

borders("world", color="gray85", fill="grey80")+

geom_point(data = rladies, aes(lon, lat, size=followers, frame=created_at, cumulative=TRUE), color="purple", alpha=0.5)+

scale_size_continuous(range = c(4, 16), breaks = c(250, 500, 750, 1000))+

geom_point(data = ghost_points_ini, aes(lon, lat, size=followers, frame=created_at, cumulative=TRUE), alpha=0)+

geom_point(data = ghost_points_fin, aes(lon, lat, size=followers, frame=created_at, cumulative=TRUE), alpha=0)+

labs(size="Followers", title="The development of R-Ladies’ Twitter accounts",x=NULL,y=NULL)+

theme(text = element_text(family = "Times New Roman", color = "#EEEEEE"),

plot.title = element_text(size=28, color = "#f9ba00"),

plot.subtitle = element_text(size=14),

axis.ticks = element_blank(),

axis.text = element_blank(),

panel.grid = element_blank(),

panel.background = element_rect(fill="#333333"),

plot.background = element_rect(fill = "#333333"),

legend.position = c(0.18,0.36),

legend.background = element_blank(),

legend.key = element_blank(),

legend.text = element_text(size = 18),

legend.title = element_text(size=24, color = "#f9ba00"))+

annotate(geom = "text",

label="Made by Logos ytlogos.github.io\nOriginally from d4tagirl https://d4tagirl.com",

x=70, y=-55, size=6, family="Helvetica Black", color="#f9ba00", hjust="left")

animation::ani.options(interval=0.15, ani.width=1500, ani.height=800, units="in")

gganimate::gganimate(map, filename = "d4tagirlmap.gif")

SessionInfo

sessionInfo()

## R version 3.4.3 (2017-11-30)

## Platform: x86_64-w64-mingw32/x64 (64-bit)

## Running under: Windows 10 x64 (build 16299)

##

## Matrix products: default

##

## locale:

## [1] LC_COLLATE=Chinese (Simplified)_China.936

## [2] LC_CTYPE=Chinese (Simplified)_China.936

## [3] LC_MONETARY=Chinese (Simplified)_China.936

## [4] LC_NUMERIC=C

## [5] LC_TIME=Chinese (Simplified)_China.936

##

## attached base packages:

## [1] stats     graphics  grDevices utils     datasets  methods   base

##

## other attached packages:

##  [1] ggthemes_3.4.0       maps_3.2.0           BiocInstaller_1.28.0

##  [4] forcats_0.2.0        stringr_1.2.0        dplyr_0.7.4

##  [7] purrr_0.2.4          readr_1.1.1          tidyr_0.8.0

## [10] tibble_1.4.2         ggplot2_2.2.1.9000   tidyverse_1.2.1

## [13] pacman_0.4.6

##

## loaded via a namespace (and not attached):

##  [1] reshape2_1.4.3    haven_1.1.1       lattice_0.20-35

##  [4] colorspace_1.3-2  htmltools_0.3.6   yaml_2.1.16

##  [7] utf8_1.1.3        rlang_0.1.6       pillar_1.1.0

## [10] foreign_0.8-69    glue_1.2.0        modelr_0.1.1

## [13] readxl_1.0.0      bindrcpp_0.2      bindr_0.1

## [16] plyr_1.8.4        munsell_0.4.3     gtable_0.2.0

## [19] cellranger_1.1.0  rvest_0.3.2       psych_1.7.8

## [22] evaluate_0.10.1   labeling_0.3      knitr_1.19

## [25] parallel_3.4.3    broom_0.4.3       Rcpp_0.12.15

## [28] scales_0.5.0.9000 backports_1.1.2   jsonlite_1.5

## [31] mnormt_1.5-5      hms_0.4.1         digest_0.6.15

## [34] stringi_1.1.6     grid_3.4.3        rprojroot_1.3-2

## [37] cli_1.0.0         tools_3.4.3       magrittr_1.5

## [40] lazyeval_0.2.1    crayon_1.3.4      pkgconfig_2.0.1

## [43] xml2_1.2.0        lubridate_1.7.1   assertthat_0.2.0

## [46] rmarkdown_1.8     httr_1.3.1        rstudioapi_0.7

## [49] R6_2.2.2          nlme_3.1-131      compiler_3.4.3

   



 往期精彩内容整理合集 

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)


公众号后台回复关键字即可学习

回复 R                  R语言快速入门及数据挖掘 
回复 Kaggle案例  Kaggle十大案例精讲(连载中)
回复 文本挖掘      手把手教你做文本挖掘
回复 可视化          R语言可视化在商务场景中的应用 
回复 大数据         大数据系列免费视频教程 
回复 量化投资      张丹教你如何用R语言量化投资 
回复 用户画像      京东大数据,揭秘用户画像
回复 数据挖掘     常用数据挖掘算法原理解释与应用
回复 机器学习     人工智能系列之机器学习与实践
回复 爬虫            R语言爬虫实战案例分享

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用gganimate可视化R-Ladies发展情况 的相关文章

  • Zebra基本配置

    前言 Zebra是一个路由软件包 提供基于TCP IP路由服务 支持RIPv1 RIPv2 RIPng OSPFv2 OSPFv3 BGP 4 和 BGP 4 等众多路由协议 Zebra还支持BGP特性路由反射器 Route Reflect
  • 关于vue3刷新页面后,数据丢失问题

    本文重点解决刷新页面数据丢失的问题 一般情况下 调试过程中 数据会变空 部署到服务器后 如果刷新 可能会报404 NOT FOUND 一开始解决 思路大概是将数据存储到piniaStore中 但是interesting 刷新页面Store照
  • ISO/OSI七层协议中的下三层在AIX中的实现

    复杂度4 5 机密度4 5 最后更新2021 04 29 ISO 国际标准化组织 international standard organize OSI 开放系统互连模型 open system interconnection ISO专门制
  • Android VNDK限制下的解决方案

    你有没有遇到过这个错误呢 F linker CANNOT LINK EXECUTABLE system bin xxx library libxxx so not found 首先在android生态里 一般的应用开发者 不会遇到这个问题
  • Sonar常见问题修改

    Sonar常见问题修改 1 SonarLint简介与安装 1 1 SonarLint简介 1 2 SonarLint安装与配置 1 2 1 IDEA 插件在线安装 1 2 2 IDEA 插件离线安装 1 2 3 SonarLint Gene
  • 响应式编程介绍

    响应式编程简介 原文 你应该对响应式编程这个新事件有点好奇吧 尤其是与之相关的部分框架 Rx Bacon js RAC等等 在缺乏好的资源的情况下 学习响应式编程成为痛苦 我开始学的时候 做死地找各种教程 结果发现有用的只是极少部分 而且这
  • Java Excel转图片

    1 在pom xml添加依赖
  • 秒懂边缘云

    作者 辰舒 背景 当下 各类门户网站 短视频 剧集观看 在线教育等内容生态快速发展 互联网流量呈现爆发式增长 在靠近用户的地方就有CDN节点 用户通过手机或PC畅快浏览网页 视频 图片时 都需要CDN提供加速 作为经历二十多年发展的技术 C
  • 数据库连接的两种实现方式(读取配置文件)——DBCP&C3P0;DBCP实现连接代码,C3P0实现连接代码——包含完整代码

    两种数据库连接实现方式 第一种方式 DBCP DBCP使用流程 导jar包 使用DBCP创建数据库连接对象 DataSource ds BasicDataSourceFactory createDatasource 一个存储连接信息的pro
  • Android开发安卓10不显示通知栏Notification不显示NotificationManager.notify无效通知栏不显示

    Android8 0以上得加channelId Intent intent new Intent SplashActivity this ChatActivity class PendingIntent pendingIntent Pend
  • 学习django心得(一)

    学习django心得 一 说明 该文章用于博主记录学习心得和主要学习收获 学习材料大多来自刘江的博客教程 本文也就是它教程的概括 感兴趣的同学可以前往学习 ps 常见API原博客教程解释得很详细 时间 2020 3 1 学习内容 Djang
  • JAVA图像处理

    一 图像原理 图像是由一个个像素点组成的矩阵形成的 每个像素点的大小是1 int 32bit 4个字节分别对应A R G B 0 255byte 0000 0000 A 0000 0000 R 0000 0000 G 0000 0000 B
  • React入门-React的特点,React脚手架搭建工程

    React的特点 轻量 React的开发版所有源码 包含注释 仅3000多行 原生 所有的React的代码都是用原生JS书写而成的 不依赖其他任何库 易扩展 React对代码的封装程度较低 也没有过多的使用魔法 所以React中的很多功能都
  • spring

    spring 解决企业应用开发
  • Axure中引用javascript代码

    Axure支持原生javascript语法调用 Axure中默认的javascript位置存放在Axure安装目录axureRP DefaultSettings Prototype Files resources scripts文件夹下 如
  • Kubernetes 之深入理解 StatefulSet

    文章目录 StatefulSet 的由来 有状态应用 StatefulSet 的设计思想 拓扑状态 Headless Service 如何维持应用实例的拓扑状态 存储状态 Persistent Volume Claim PVC 其实就是一种
  • 安信可蓝牙PB-02 SDK二次开发记录

    目录 1 开发环境 烧录调试 2 例程踩坑 1 编译烧录 watchdog 例程 1 开发环境 烧录调试 详细参考下面两篇教程 安信可PB 01 02模组专题 PB 01 02模组开发板应用 BLE UART固件的使用教程 安信可PB 01
  • Linux系统与管理 - (九)系统初始化进程文件及服务[结]

    目录 自说 学习路径 init进程 systemd进程 服务管理 自说 本章是linux系统与管理的最后一章 系统初始化进程文件与服务管理 其实只要用心 基本知识也就是呢么多 最重要的如何灵活运用 日积月累 以小积多 不断的扩充自己的知识
  • MySQL数据库(九) 集群 Cluster 和性能优化

    文章目录 6 MySQL 集群 Cluster 6 1 MySQL主从复制 6 1 1 主从复制架构和原理 6 1 2 实现主从复制配置 6 1 3 主从复制相关 6 1 4 实现级联复制 6 1 5 主主复制 6 1 6 半同步复制 6
  • JMeter压测,跨线程组传递参数,设置全局变量

    1 测试计划中 勾选独立运行线程组选项 必须勾选 否则不能传参 2 正则表达式取出要传递的参数 3 添加一个BBeanShell 后置处理器 4 setProperty global token token 其中 global token是

随机推荐

  • 不能初始化数据库支持endnote_EndNote正确恢复数据库方法

    EndNote正确恢复数据库方法 EndNote有个恢复数据库功能 Recover Library 当EndNote的数据库Library受损或者打不开时 利用Recover Library可能是最后的一颗救命稻草 但是EndNote的Re
  • 2020-10-31

    实验一 系统环境 Kali Linux 2 Windows网络环境 交换网络结构实验工具 Metasploitable2 需自行下载虚拟机镜像 Nmap Kali WinHex 数据恢复软件等 实验步骤 1 用搜索引擎Google或百度搜索
  • MyISAM 和 InnoDB 讲解

    MyISAM 和 InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型 这两个表类型各有优劣 视具体应用而定 基本的差别为 MyISAM类型不支持事务处理等高级处理 而InnoDB类型支持 MyISAM
  • 请求转发和重定向区别

    一 转发和重定向区别详解 作为一名程序员 特别是java web开发的程序员 在使用servlet jsp的时候 我们必须要知道实现页面跳转的两种方式的区别和联系 即转发和重定向的区别 RequestDispatcher forward方法
  • openGLES3.0基本概念

    前言 学习openGL已经有一段时间了 断断续续大概2年左右 发现有些概念还是没有搞清楚 下面记录一下 有空的时候时不时的回顾一下 免得忘记 哎 上年纪了 记性越来越差了 openGLES着色语言 1 version 300 es 声明着色
  • 操作系统是如何启动起来的呢

    https mp weixin qq com s QE9OxBjoIyYjpNVt kXfMw
  • Java基础:Stack基本操作

    StackDemo java import java util Stack public class StackDemo public void showpush Stack
  • 【华为OD机试】计算误码率 (C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 语言限定 C clang11 C clang 11 Pascal fpc 3 0 2 Java jav
  • 前端图片处理(一) --- Cropper.js

    Cropper js 介绍 一个纯 JavaScript 的图片裁剪操作插件库 并且是支持移动端的 安装 npm install cropperjs 引入 Cropper 对象 样式 import cropperjs dist croppe
  • linux基线检查

    bin bash version v1 0 by pensar 操作系统linux 配置规范 centos7 mkdir tmp check str1 sbin ifconfig a grep inet grep v 127 0 0 1 g
  • 数据分布图-python 高斯分布三维等高线图像

    创作不易 转载请注明出处 论文的画图的时候 发现别人的图很好看 大概长这样 折腾了半天发现可以用高斯分布模拟 可以设置rv1 rv2 rv3来控制生成的峰的个数 然后根据调整rv的mu和var来控制生成图像的形状 rvs rv rv1 rv
  • C语言基础;求和及平均值

    3 输入三个实数 求出这三个数的和以及平均值 include
  • unity-内存GC

    Unity内存 原生内存 Native Memory 和托管内存 Managed Memory 其中Native Memory大家接触的会比较少 而且可操控性也比较少 例如AssetBundle Texture Audio这些所占的内存 这
  • Qt解决中文显示乱码问题

    我相信所有用过Qt都遇到过中文乱码问题 下面列出了我经常用的几种解决方法 方法一 include QtUtf8 h include
  • 【最新】M1 Mac如何安装Python(miniforge)并搭建环境

    B站主页 https space bilibili com 1707990930 欢迎 点赞 收藏 评论 如有错误请指正 Python Java领域博主 你们的支持是我最大的动力 嗨 我是爱丽 在这篇文章中 我将告诉你如何在你的M1 Mac
  • 支持向量机和感知机的区别

    支持向量机和感知机的区别 支持向量机和感知机都是通过一个超平面来划分样本实例类别 但是不同的是支持向量机在特征向量中能够找出非线性的超平面 支持向量机找出来的超平面是最优的 且只有一个 而感知机通过误分类点定义出的代价函数找到的超平面 是不
  • 初探STM32F4(3)--WIFI模块(1)

    WIFI WIFI测试的代码架构剖析 步骤1 wifi模块的主函数流程 步骤2 剖析atk 8266 send cmd 函数 步骤3 剖析atk 8266 wifista test 函数 步骤4 剖析如何配置成TCP客户端 步骤5 作为客户
  • js常见的属性和方法总结

    js常见的属性和方法 1 JS全局属性和方法 1 1全局属性 1 2全局方法 2 布尔对象 3 Number对象 3 1Number的属性 3 2Number的方法 4 字符串对象 4 1字符串的属性 4 2字符串的方法 5 数组对象 5
  • Python 在 conda 中安装了包,但是 pycharm 中无法引用的问题解决

    一 进入 PyCharm 的设置 二 找到 Interpreter 选项 三 进入 Show All 四 点击 五 选择 Conda 里面所对应的环境即可
  • 利用gganimate可视化R-Ladies发展情况

    作者简介Introduction taoyan R语言中文社区特约作家 伪码农 R语言爱好者 爱开源 个人博客 https ytlogos github io 公众号 生信大讲堂 往期回顾 ggplot2学习笔记系列之主题 theme 设置