R语言mgarch包的说明_R语言模拟疫情传播-gganimate包

本文介绍了如何使用R语言的gganimate包生成疫情传播的动态图,对比了基础画图功能与gganimate的区别。通过示例展示了在人们随意和控制移动情况下模拟的效果,并提供了组合动态图的方法。gganimate需要预先准备数据集,适用于复杂动态展示需求。
摘要由CSDN通过智能技术生成

30ea9433b3310c240e85530acb801e32.png

原创:hxj7

本文用gganimate包展示模拟疫情数据

本文篇幅较长,分为以下几个部分:

  • 前言
  • 效果展示
  • 小结
  • 附录:代码

前言

前文《R语言模拟疫情传播-RVirusBroadcast》已经介绍了一种用R语言模拟疫情传播的方法,不过当时为了实时模拟数据(没有事先准备好的数据集可用)的动态展示效果,笔者在RVirusBroadcast中使用的是R中的基础作图功能,在本文中我们将用gganimate包来生成动态图。

gganimate包是一个可以在ggplot作图基础上生成动态图的工具,像ggplot作图一样,使用gganimate包要先把数据集准备好。由于gganimate的运算量较大,所以只模拟了30天的数据。

效果展示

请注意下面的gif动图都是模拟生成的,纯属虚构,不具有现实意义,仅供电脑模拟实验所用。

当人们随意移动时

8d6a1d7c1998a9c482f3b40dbf21d7d6.gif

13fbb8590e89e4e445e84ac76492f9cb.gif

上面两张图是gganimate包生成的gif动图,利用magick包还可以将两张动图组合起来:

d5a565aa78ba1ccd3f587b91c81fe26f.gif

当人们控制自己的移动时

ed785ce7946daddae8d3d238542c6f43.gif

a6fab592e4cca0d9bb081a6e241703b1.gif

754891904a703a917e03f6663eacda0a.gif

小结

  • 与RVirusBroadcast程序用基础画图功能来动态展示数据不同的是,gganimate包是在ggplot作图的基础上生成动图的,它需要事先准备好数据集。
  • 利用gganimate + magick可以组合动态图。
  • gganimate还可以做很多有意思的事情,有兴趣的朋友可以到官网上去看一看。

参考

[1] “计算机仿真程序告诉你为什么现在还没到出门的时候” 视频地址:https://www.bilibili.com/video/av86478875?spm_id_from=333.788.b_765f64657363.1
[2] VirusBroadcast (Java)程序源码:https://github.com/KikiLetGo/VirusBroadcast
[3] gganimate包项目链接:https://github.com/thomasp85/gganimate

附录:代码

###name:RVirusBroadcast-via-gganimate
###author:hxj7
###version:202002010
###note:本程序是"VirusBroadcast (in Java)"的R-动画版本,只能处理事先准备好的数据集
###      VirusBroadcast (in Java) 项目链接:
###      https://github.com/KikiLetGo/VirusBroadcast/tree/master/src

library(tibble)
library(dplyr)
library(ggplot2)
library(tidyr)
library(magick)
library(gganimate)

########## 模拟参数 ##########
ORIGINAL_COUNT <- 50     # 初始感染数量
BROAD_RATE <- 0.8        # 传播率
SHADOW_TIME <- 140       # 潜伏时间,14天为140
HOSPITAL_RECEIVE_TIME <- 10   # 医院收治响应时间
BED_COUNT <- 1000        # 医院床位

MOVE_WISH_MU <- -0.99   # 流动意向平均值,建议调整范围:[-0.99,0.99];
#   -0.99 人群流动最慢速率,甚至完全控制疫情传播;
#   0.99为人群流动最快速率, 可导致全城感染

CITY_PERSON_SIZE <- 5000    # 城市总人口数量
FATALITY_RATE <- 0.02       # 病死率,根据2月6日数据估算(病死数/确诊数)为0.02
SHADOW_TIME_SIGMA <- 25     # 潜伏时间方差
CURED_TIME <- 50            # 治愈时间均值,从入院开始计时
CURED_SIGMA <- 10           # 治愈时间标准差
DIE_TIME <- 300             # 死亡时间均值,30天,从发病(确诊)时开始计时
DIE_SIGMA <- 50             # 死亡时间标准差

CITY_WIDTH <- 700 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值