nCov疫情可视化数据分析(左手R右手Python实战)

Author: Haoxiang Qi(齐浩翔)
Date: Feb 8, 2020
Data from: GuangchuangYu (Github), jianxu305 (Github)

R包获取数据

##   name confirm suspect dead heal
## 1 湖北   27100       0  780 1439
## 2 广东    1120       0    1  125
## 3 浙江    1075       0    0  173
##   confirm suspect dead heal deadRate healRate  date
## 1      41       0    1    0      2.4      0.0 01.13
## 2      41       0    1    0      2.4      0.0 01.14
## 3      41       0    2    5      4.9     12.2 01.15

全国累计总人数趋势图

数据处理

##    number   date condition
## 0       0  01.13        治愈
## 1       0  01.14        治愈
## 2       5  01.15        治愈

可视化

分析:
1. 可以非常明显的看出确诊人数和疑似人数仍然持上升趋势,其中确诊人数呈现近似指数增长,预计2月9日即突破4万确诊,形势依然不容乐观。
2. 全国治愈人数逐渐上升突破1542人,各地的物资医疗支援开始初见成效。

有兴趣的同学可以查看下面的使用R语言预测拐点的链接
https://openr.pzhao.org/zh/blog/ncovr-03/

全国确诊/疑似百分比堆积图

数据处理

##     number   date condition  total     ratio
## 51   27657  02.07        疑似  62255  0.444253
## 52   28942  02.08        疑似  66193  0.437237
## 53   37251  02.08        确诊  66193  0.562763

可视化

分析:
1. 确诊人数占比近日出现上升,并于2月4日超过50%,说明确诊能力得到提升,感染人群容易被控制。
2. 确诊能力的提升使得更多处于潜伏期的人群能够被隔离,减少与未染病人群的接触,降低疫情扩大的可能。

R包的数据比较少,下面使用Python获取更多数据

## 最近更新于:  2020-02-09 08:34:27.166000
## 数据日期范围:  2020-01-24 to 2020-02-09
## 数据条目数:  26347
## The following dates are removed due to insufficient provinces reported:  [datetime.date(2020, 2, 9)]
##       provinceName cityName  confirmed  cured  dead  updateDate
## 25357          云南省      丽江市          1      0     0  2020-01-24
## 25355          云南省       昆明          3      0     0  2020-01-24
## 25356          云南省    西双版纳州          1      0     0  2020-01-24

人口-GDP-死亡数气泡关系图 (除武汉外死亡数前十城市)

数据处理

##   provinceName cityName  confirmed  cured  dead  updateDate   GDP  population
## 0          湖北省       黄冈       2041    105    36  2020-02-08  2035         750
## 1          湖北省       孝感       2313     42    26  2020-02-08  1912         530
## 2          湖北省       鄂州        569     33    20  2020-02-08  1005         108

可视化

分析:
手动录入10座城市的GDP和人口数据,并加入全国人均GDP标准线,想探究目前富裕程度和死亡人数的关系。
1. 襄阳和宜昌作为湖北省老二老三,拥有较为优良的医疗条件,所以即便人口众多也能尽可能降低死亡数。
2. 就死亡数来看,可能黄冈和孝感对医疗力量的需求更大,应加大对这两座城市的救援力度。

四省治愈率趋势图(湖北/浙江/河南/广东)

数据处理

##     provinceName  updateDate  confirmed  cured  dead
## 327          湖北省  2020-02-08      24953   1218   699
## 326          湖北省  2020-02-07      22112    867   618
## 325          湖北省  2020-02-06      19665    712   549

可视化

# R
# 新建治愈率计算列并选出三列
total <- py$total %>% mutate(cured_ratio = cured / confirmed * 100) %>% select(
  "provinceName", "updateDate", "cured_ratio")

# 定义新函数:方便一次性画出四张图
plot_provinces <- function(info, flag_title, flag_title_x, flag_title_y)
  {
  # 传递参数进入theme以方便消除多余的标题
  if (flag_title == TRUE)  
    title = element_blank()
  else
    title = element_text(size = 10, face = "bold")
  if (flag_title_x == TRUE)
    title_x = element_blank()
  else
    title_x = element_text(size = 8)
  if (flag_title_y == TRUE)
    title_y = element_blank()
  else
    title_y = element_text(size = 8)
  if (info == "浙江省")
    {mannul_colors = c("#E69F00", "#56B4E9")
    mannul_shapes = c(16, 17)}
  else
    {mannul_colors = c("#56B4E9", "#E69F00")
    mannul_shapes = c(17, 16)}
  
ggplot(total %>% filter(provinceName == info | provinceName == "全国平均"), aes(
  x=as.Date(updateDate, "%Y-%m-%d"), y=cured_ratio, color=provinceName)) + 
  geom_line(size=.7, alpha=.5) +
  geom_point(aes(shape=provinceName)) +
  theme_classic() +
  scale_x_date(date_labels = "%m/%d", breaks = "3 days") +
  xlab("日期") +
  ylab("治愈率 (%)") +
  geom_hline(yintercept = 5, color='black', size=.5, alpha=.7, linetype="dotted") +
  geom_hline(yintercept = 10, color='black', size=.5, alpha=.7, linetype="dotted") +
  geom_hline(yintercept = 15, color='black', size=.5, alpha=.7, linetype="dotted") +
  ylim(0,15) +
  ggtitle("四省治愈率趋势图(湖北/浙江/河南/广东)") +
  scale_color_manual(values=mannul_colors) +
  scale_shape_manual(values=mannul_shapes) +
  theme(text = element_text(family = "Source Han Sans CN")) +
  theme(
    plot.title = title,
    axis.text=element_text(size=8,face="bold"),
    axis.title.x=title_x,
    axis.title.y=title_y,
    legend.text = element_text(size=8),
    legend.title = element_text(size=8),
    )
}

# 调用函数绘制图
hubei <- plot_provinces("湖北省", FALSE, TRUE, FALSE)
henan <- plot_provinces("河南省", TRUE, FALSE, FALSE)
zhejiang <- plot_provinces("浙江省", TRUE, TRUE, TRUE)
guangdong <- plot_provinces("广东省", TRUE, FALSE, TRUE)

# 拼接为一张图
multiplot(hubei, henan, zhejiang, guangdong, cols=2)

分析:
1. 作为确诊人数最多的四省,除湖北外,其他省均达到或超过10%的治愈率,相信随着时间的增长,会有更多患者得以康复。
2. 正是由于浙江和河南政府的积极举措,使得这两省的治愈率最为理想,值得其他省份借鉴。

全国新增确诊趋势图

数据处理

##    ticker  updateDate  new_confirmed
## 20     武汉  2020-01-30          356.0
## 15     武汉  2020-01-25           77.0
## 2     湖北省  2020-01-27          365.0

可视化

分析:
1. 可以非常直观地看出,除武汉外,其余省份疫情得到有效的控制,新增确诊人数呈现稳定下降趋势。
2. 武汉以及湖北省疫情最为严峻,目前还未看出好转迹象。