毕业设计 医学数据分析 猴痘疾病数据分析与可视化


0 前言

🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。

为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是

🚩 大数据医学分析 猴痘疾病数据分析与可视化

🥇学长这里给一个题目综合评分(每项满分5分)

  • 难度系数:2分
  • 工作量:2分
  • 创新点:4分

🧿 选题指导, 项目分享:

https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md

1 课题背景

猴痘的全球流行数据可视化

2 数据处理

# 加载包
library(ggplot2)
library(dplyr)
library(maps)
library(viridis)
# 读取数据 数据集来自https://github.com/globaldothealth/monkeypox
# Read worldwide case data
case_series <- read.csv("/home/mw/input/monkeypot5928/timeseries-country-confirmed.csv", colClasses = c("Country" = "character")) # ,colClasses = c("Country" = "factor")
head(case_series)

在这里插入图片描述

# 地图
world_map <- map_data("world")
head(world_map)
#表示过国家的经纬度

让我们定义一个具有以下特征的函数:
输入:日期、纬度范围、经度范围
输出:所提供日期的累积事例计数地图,以输入的纬度和经度值为界

# 自定义函数
plot_case_map <- function(date, xlim, ylim) {
  # Pre-process case and map data
  case_map <- case_series[which(case_series$Date == date), c(4, 3)]
  colnames(case_map)[1] <- "region"
  case_map$region[which(case_map$region == "United States")] <- "USA"
  case_map$region[which(case_map$region == "United Kingdom")] <- "UK"
  case_map$region[which(case_map$region == "Democratic Republic Of The Congo")] <- "Democratic Republic of the Congo"
  case_map$region[which(case_map$region == "Bosnia And Herzegovina")] <- "Bosnia and Herzegovina"
  if ("Gibraltar" %in% case_map$region) {
    case_map <- case_map[-which(case_map$region == "Gibraltar"), ]
  }
  if (length(setdiff(world_map$region, case_map$region)) > 0) {
    case_map_other <- as.data.frame(cbind(setdiff(world_map$region, case_map$region), NA))
    colnames(case_map_other) <- c("region", "Cumulative_cases")
    case_map <- rbind(case_map, case_map_other)
  }
  case_map$Cumulative_cases <- as.numeric(case_map$Cumulative_cases)
  case_map <- left_join(case_map, world_map, by = "region")

  # Plot case map
  ggplot(case_map, aes(long, lat, group = group)) +
    geom_polygon(aes(fill = Cumulative_cases), color = "white", size = 0.2) +
    scale_fill_viridis_c() +
    theme_linedraw() +
    theme(legend.position = "right") +
    labs(fill = "Cumulative cases") +
    theme(legend.direction = "vertical") +
    coord_map(xlim = xlim, ylim = ylim)
}

根据函数绘制地图

3 数据可视化

## 绘制截至2022年7月29日的世界猴痘病例地图:
plot_case_map("2022-07-29", c(-180, 180), c(-55, 90))

在这里插入图片描述

### 绘制截至2022年5月29日的世界猴痘病例地图
plot_case_map("2022-05-29", c(-180, 180), c(-55, 90))

在这里插入图片描述

#绘制截至2022年7月29日的猴痘病例地图:
plot_case_map("2022-07-29", c(-22, 38), c(35, 64))

在这里插入图片描述

#美国的猴痘病例数据来源 https://www.cdc.gov/poxvirus/monkeypox/response/2022/us-map.html
us_case_map<- read.csv("/home/mw/input/monkeypot5928/Monkeypox.csv")
head(us_case_map)

在这里插入图片描述

us_map <- map_data("state")
us_case_map <- us_case_map[-which(us_case_map$State %in% c("Alaska", "Hawaii", "Puerto Rico", "Non-US Resident")), -3]
colnames(us_case_map)[1] <- "region"
us_case_map$region <- tolower(us_case_map$region)
if (length(setdiff(us_map$region, us_case_map$region)) > 0) {
  us_case_map_other <- as.data.frame(cbind(setdiff(us_map$region, us_case_map$region), NA))
  colnames(us_case_map_other) <- c("region", "Cases")
  us_case_map <- rbind(us_case_map, us_case_map_other)
}
us_case_map$Cases <- as.numeric(us_case_map$Cases)
us_case_map <- left_join(us_case_map, us_map, by = "region")

# Plot US case map
ggplot(us_case_map, aes(long, lat, group = group)) +
  geom_polygon(aes(fill = Cases), color = "white", size = 0.2) +
  scale_fill_viridis_c() +
  theme_linedraw() +
  theme(legend.position = "right") +
  labs(fill = "Total cases") +
  theme(legend.direction = "vertical")

在这里插入图片描述

让我们定义一个函数,该函数将国家/地区名称作为输入并绘制:

x 轴上的日期
左侧 Y 轴上的累积案例计数(红色)
右侧 Y 轴上的每日案例计数(蓝色)

plot_case_series <- function(country) {
  # Plot cumulative case counts in red
  country_series <- case_series[which(case_series$Country == country), ]
  par(oma = c(1, 1, 1, 3))
  plot(country_series$Cumulative_cases, type = "l", xaxt = "n", xlab = NA, main = paste(country, "reported case time series"), ylab = "Cumulative cases", col.lab = "red", col = "red")
  axis(1, at = 1:nrow(country_series), labels = country_series$Date, las = 2, gap.axis = 1, cex.axis = 0.8)

  # Plot daily case counts in blue
  par(new = TRUE)
  plot(country_series$Cases, type = "l", axes = FALSE, xlab = NA, ylab = NA, col = "blue")
  axis(4, at = pretty(range(country_series$Cases)))
  mtext("Cases", side = 4, line = 3, col = "blue")
  grid()
}

现在,我们可以使用此函数来探索多个国家/地区的猴痘病例趋势:

加拿大报告病例曲线

plot_case_series("Canada")

在这里插入图片描述

美国病例曲线

plot_case_series("United States")

在这里插入图片描述

英国病例曲线

plot_case_series("United Kingdom")

在这里插入图片描述

最后

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值