Корона вирусын тархацын мэдээг АНУ-ын Жон Хопкинсын их сургуулиас гаргаж www.kaggle.com сайтад байрлуулжээ. Ингээд тус вирусын тархалт, түүнийг дагасан үхэл зэрэг олон зүйлс та бидний сэтгэлийг зовоосон энэ цаг үед вирусын газарзүйн тархалтыг харуулсан зураглал хийхээр шийдлээ. Ингэхдээ зүгээр нэг зураглал хийж харуулаад орхих биш харин тийм зураг хэрхэн хийх аргыг нь ч танилцуулъя. Бас үүндээ манайхны өргөнөөр сонирхох, хэрэглэж сурахыг эрмэлзэх болсон R програмыг ашиглах болно. Мөн илүү сонирхолтой болгохын тулд дор харагдаж буй, вирусын тархалтыг өдөр өдрөөр харуулсан хөдөлгөөнт зураг үүсгэнэ.

Ашиглах програмын хувьд R програм болон түүний ggplot2, maps багцуудыг суулгах шаардлагатай. Бас хөдөлгөөнт зураг үүсгэхэд ImageMagick програм ашиглана. Эдгээр нь цөм үнэгүй програм тул та интернэтээс өөрийн комьютерийн үйлдлийн системдээ тохирох хувилбарыг нь чөлөөтэй татан авч суулгах боломжтой.

Дээр дурдсан тархалтын мэдээ буюу ашиглах өгөгдлөө www.kaggle.com сайтаас татаж авна. Өгөгдөл татаж авахын тулд сайтад бүртгүүлж, нэвтэрч орсон байх шаардлагатай. Миний хувьд батлагдсан оношын мэдээг татан авч Downloads хавтаст хадгалсан байгаа бөгөөд R програмаас энэхүү хавтас болон файлын нэрээр нь өгөгдлөө дуудаж ачаалсан.

Ингээд R дээр бичиж ажиллуулсан кодоо тайлбартай оруулъя.

# Өгөгдөл

data <- read.csv(file = "~/Downloads/time_series_19-covid-Confirmed.csv", check.names = FALSE)

View(data)

# Шаардлагатай багцуудыг суулгах тушаал

# install.packages(c("ggplot2", "maps"))

# Газрын зургийн мэдээлэл бэлдэх

map <- ggplot2::map_data("world")

# Зургийн хэв загвар өөрчлөх зарим зүйлс

ggplot2::theme_update(
  # зургийн тайлбар голлуулах
  plot.title = ggplot2::element_text(hjust = 0.5),
  plot.subtitle = ggplot2::element_text(hjust = 0.5)
)

# Суурь зураг бэлдэх

corona_map <- ggplot2::ggplot() +
  ggplot2::geom_polygon(dat = map, ggplot2::aes(x = long, y = lat, group = group), fill = "grey80") +
  ggplot2::xlab("Longitude") + ggplot2::ylab("Latitude")

# Бүх зургийг хамгийн их өвчлөлтэй харьцуулсан нэг ижил масштабт шилжүүлэх "заль"

corona_map <- corona_map + ggplot2::ylim(range(map$lat)) + ggplot2::xlim(range(map$long))
max_case <- max(data[-{1:4}])

# Зураг хадгалах шинэ хавтас үүсгэх

dir.create("~/corona_virus")

# Үүсгэсэн хавтсаа ажлын хавтас болгох

setwd("~/corona_virus")

# Зураг хадгалах

png(file = "covid%02d.png", width = 640, height = round(640 * diff(range(map$lat)) / diff(range(map$long))))

# Өдөр тус бүрээрх зураг зурах

for (day in 5:ncol(data)-4) {
  # Газарзүйн байрлал болон өвчлөлийн мэдээлэл ялгаж авах
  data_by_date <- data[c(4,3,day+4)]
  # Ялгаж авсан өгөгдөл дэх хувьсагчдын нэрсийг өөрчлөх
  names(data_by_date) <- c("Long", "Lat", "Cases")
  # Өвчлөл бүртгэгдсэн газруудыг ялгаж авах
  data_by_date <- data_by_date[data_by_date$Cases > 0, ]
  # Хамгийн их өвчлөлтэй харьцуулсан нэг ижил масштабт шилжүүлэх "заль"
  data_by_date <- rbind(data_by_date, c(0, 180, max_case))
  # диаграмм байгуулах тушаал
  print(corona_map +
    ggplot2::geom_point(
      data = data_by_date
      , mapping = ggplot2::aes(x = Long, y = Lat, size = Cases), col = "red"
      , show.legend = FALSE
    ) +
    ggplot2::ggtitle(label = "Novel Corona Virus Cases", subtitle = names(data)[day+4])
  )
}

# Зураг хадгалахыг болих

dev.off()

# ImageMagick програм ашиглаж .png зургуудыг хөдөлгөөнт .gif зураг болгох

system("convert -delay 80 -loop 1 *.png ~/corona_virus_cases.gif")

# Хэрэггүй болсон .png файлуудыг устгах

file.remove(list.files(pattern=".png"))

# Ажлын хавтсаа хэрэглэгчийн хавтас уруу чиглүүлэх

setwd("~/")

# Үүсгэсэн хавтсаа устгах

unlink(x = "~/corona_virus", recursive = TRUE)

Дээрх кодыг ажиллуулсны үр дүнд дээр харуулсан шиг хөдөлгөөнт зураг гарна.