Пакет за генериране на COVID-19 графики от отворените данни на България, EUROSTAT, ECDC, НСИ.
- Графиките са тук: https://stantraykov.github.io/c19bg/
- Документация на публичните функции в пакета
- Методика за изчисление на R
Ако работите за държавата и имате нещо общо с обработката и публикацията на COVID-19 данни, изпълнете гражданския си дълг и станете whistleblower. Разяснете на обществото как се взимат решенията да се скриват елементарни показатели (напр. географска и възрастова разбивка на смъртните случаи, но и много други).
За инсталация директно от GitHub, въведете в R или (още по-добре) в RStudio:
install.packages("remotes") remotes::install_github("StanTraykov/c19bg")Ако има проблеми с текущата работна версия, може да изтеглите последния рилийз и инсталирате с install.packages("<път към сваления файл>") или директно от R:
install.packages("remotes") remotes::install_github("StanTraykov/c19bg", ref = "v0.1.1")Еднократно и незадължително. Позволява ползването на шрифтове при извеждането на екран и записването в растерни формати (PNG, JPEG). Не влияе на векторния SVG изход (вкл. по-нататъшна обработка с външни програми).
За да ползвате шрифтовете на Windows в R, инсталирайите extrafont:
install.packages("extrafont") extrafont::font_import() # отнема времеR може да ползва шрифтовете на macOS директно, но macOS може да не разполага с шрифта по подразбиране в графиките (Calibri). Ако имате инсталиран MS Office, можете да създадете папка и копирате шрифтовете от Office в нея.
$ mkdir ~/Library/Fonts/Microsoft $ cd ~/Library/Fonts/Microsoft $ cp -a /Applications/Microsoft\ Word.app/Contents/Resources/DFonts/* . Ако нямате MS Office, вижте Homebrew и brew cask install font-microsoft-office.
- Inkscape
- Инсталирайте в мястото по подразбиране (
C:\Program Files\Inkscape\bin\inkscape.exe) или укажете къде е в опциите (виж по-долу).
- Инсталирайте в мястото по подразбиране (
- ImageMagick
- Сложете в
%PATH%или укажете къде еmagick.exeв опциите (виж по-долу).
- Сложете в
- Inkscape—ползвайте версията за macOS
- Ще бъде открит, ако е в мястото по подразбиране (
/Applications/Inkscape.app/Contents/MacOS/inkscape"). Можете да укажете друго в опциите (виж по-долу). - Ако имате проблеми, ползвайте последната версия в разработка (latest development version)
- Ще бъде открит, ако е в мястото по подразбиране (
- ImageMagick
- Инсталирайте с Homebrew (
brew install imagemagick) - Уверете се, че
binдиректорията на Homebrew (обикновено/opt/homebrew/binили/usr/local/bin) е в$PATH. За RStudio е достатъчно, ако прибавите пътя в/etc/paths. (Добавянето в.zprofileважи само заzshи няма да има ефект.)
- Инсталирайте с Homebrew (
library(c19bg) # бързо генериране на SVG (високо качество) # - отиват в c19bg/plots в текущата папка (обикн. Documents под Windows) # - в c19bg/data ще намерите изтеглените данни и изчислен R (estR.csv) c19_save_all() # бързо генериране на PNG, без презареждане от Интернет (dl = F) c19_save_all(file_ext = ".png", dl = F) # JPEG c19_save_all(file_ext =".jpg", dpi = 125, quality = 100) # PNG 2000x2000px c19_save_all(file_ext = ".png", dpi = 200, w = 10, h = 10) # растеризация с Inkscape, JPEG компресия с ImageMagick # - по-високо качество на PNG и JPEG, но по-бавно # - вижте раздел Опции за указване на пътища към програмите c19_inkmagick() # генерира SVG, PNG и JPEG файлове # или c19_inkmagick(dl = F) # без презареждане от Интернет # вкл. графики за умирания в други страни (ЕС+) c19_inkmagick(d_all = TRUE)Пакетът ще се свърже с data.egov.bg, ECDC, EUROSTAT, за да вземе необходимите данни. Данните и графиките ще се запишат в подпапка c19bg на текущата (обикновено Documents при отваряне на R под Windows). За да използвате записаните данни (c19bg/data) без повторно сваляне от Интернет, добавете параметър dl = F на функциите за запис на всички графики (вж. примерите).
Забележка: Изчисляването на репродуктивното число R трае няколко минути, може и над 10 на по-стари компютри. Резултатите се запазват (вкл. при затваряне на R) до промяна в изходните данни.
Опциите могат да се зададат директно в R конзолата или в .Rprofile или сроден файл за автоматично изпълнение при стартиране на R.
# промяна на шрифт options(c19bg.font_family = "Calibri") options(c19bg.font_scale = 1) # скалиране на всички текстове (напр. 0.8, 1.1) options(c19bg.font_size = 14) # базов размер (пробвайте първо font_scale) # Забележка: за промяна на размер/резолюция, използвайте аргумент dpi # във функциите за изход. options(c19bg.output_dir = "c19bg/plots") # ще бъдат създадени, ако ги няма options(c19bg.data_dir = "c19bg/data") options(c19bg.output = list( inkopts = "-w %d --export-filename", mgkopts = "-quality 100", pixwidth = 1375, width = 11, height = 7, inkscape = "\"C:\\Program Files\\Inkscape\\bin\\inkscape.exe\"", magick = "magick" # работи, ако е в PATH )) # изобразяване на всички опции за пакета library(c19bg) # предварително зададени опции ще се запазят names(options())[grep("c19bg",names(options()))]library(c19bg) # зареждане на шрифтове за екран/растерен запис (ако са инсталирани) if (.Platform$OS.type == "windows" && "extrafont" %in% rownames(installed.packages())) { extrafont::loadfonts(device = "win") } # слчуаи по възрастови групи my_plot <- c19_var_plot("age", roll_func = mean, roll_window = 7, line_legend = "0") # 14-дневно плаващо средно за Европа, Америка с # изпъкване на Германия my_plot2 <-c19_eu_weekly("r14_cases", continents = c("Europe", "America"), lower_y = 0, highlight = "DE") # извеждане на екран my_plot # или print(my_plot) в неинтерактивен режим my_plot2 c19_oblasts(incid_100k = TRUE) # извеждане директно на екран # запис във файл ggplot2::ggsave(file = "my_plot.png", width = 11, height = 7, plot = my_plot) # R-графика на екран # (отнема време, освен ако R вече не е изчислен) c19_r_plot() # за разлика от функциите за масово записване, които по подразбиране теглят # от Интернет, презареждането трябва да се указва ръчно: c19_reload() # презареждане от диск (c19bg/data) c19_reload(redownload = TRUE) # презареждане от Интернет # помощ ?c19_var_plot ?c19_eu_weekly #etcДокументация на публичните функции в пакета
library(c19bg) # Данните могат да се достъпят с тези две функции # (те се използват и от графичните фукнции) eu_data <- c19_eu_data() bg_data <- c19_bg_data() # При първо изпълнение, те свалят и обработват данни от # data.egov.bg, ECDC, и EUROSTAT. Това трае известно време. # Последващи повиквания връщат вече заредените данни. За # презареждане, напр.: new_bg_data <- c19_bg_data(reload = TRUE) # от диск new_eu_data <- c19_eu_data(redownload = TRUE) # от Интернет # Съдържанието може да се разглежда/задълбава в браузера # на данни на RStudio. # ECDC/EUROSTAT седмични случаи, смъртни случаи от COVID-19, # свръхсмъртност, фактори на надвишаване, брой хоспитализирани, # тестове, позитивност View(eu_data$factor_tab) # Умирания по седмици от EUROSTAT View(eu_data$eurostat_deaths) # За България View(bg_data$gen_inc_hist) # обща статистика, вкл. ограничен набор # данни от преди да отворят данните View(bg_data$age) # по възраст (днвени) View(bg_data$subdivs) # по области (дневни)Плаващо средно 7 дни по области.
library(dplyr) library(tidyr) library(ggplot2) library(c19bg) bg_data <- c19_bg_data() oblasts_table <- bg_data$subdivs %>% select(!ends_with("_ACT")) %>% pivot_longer(cols = !matches("date"), names_to = "oblast", names_pattern = "(.*)_ALL", values_to = "cases") %>% group_by(oblast) %>% mutate(mva7 = zoo::rollapply(cases, 7, mean, align = "right", fill = NA)) # графика my_plot <- ggplot(data = oblasts_table, mapping = aes(x = date, y = mva7, color = oblast)) + geom_line() my_plot # изобразяване на екран ggsave(file = "my_plot.svg", plot = my_plot, width = 13, height = 8)