library(tidyverse)
library(dlstats)
library(ggrepel)
library(lubridate)
cran_stats
gives us downloads per month, so they will be
incomplete for the current month. I’ll exclude the current month to
account for this.
Here’s a plot function, factored out of a previous copy and paste
mess:
plot_em <- function(dl_dat) {
first_of_this_month <- floor_date(today(), unit = "month")
dl_dat |>
filter(start < first_of_this_month) |>
mutate(label = if_else(start == max(start),
as.character(package),
NA_character_)
) |>
ggplot(aes(
x = start,
y = downloads,
colour = package,
label = label
)) +
geom_smooth(se = FALSE) +
geom_point() +
labs(x = "Date", y = "Downloads", colour = "Package") +
geom_label_repel(na.rm = TRUE, segment.colour = NA) +
theme(legend.position = "none") +
scale_x_date(expand = expansion(mult = 0.2)) +
scale_y_continuous(labels = scales::comma)
}
(Some) mixed models and SEM packages:
pack_stats <-
cran_stats(c("lme4", "nlme", "sem", "lavaan", "blme", "brms", "rstanarm"))
plot_em(pack_stats)

Same again the log scale:
plot_em(pack_stats) +
scale_y_continuous(labels = scales::comma, trans = "log10")
Scale for 'y' is already present. Adding another scale for 'y', which will
replace the existing scale.

Packages for matching and propensity score weighting:
match_packages <-
cran_stats(c(
"Matching",
"MatchIt",
"twang",
"PSweight",
"cem"
))
plot_em(match_packages)

plot_em(match_packages) +
scale_y_continuous(labels = scales::comma, trans = "log10")
Scale for 'y' is already present. Adding another scale for 'y', which will
replace the existing scale.

These packages are all installed as part of the tidyverse, but can
also be installed individually.
core_tidyverse_stats <-
cran_stats(c(
"ggplot2",
"dplyr",
"tidyr",
"readr",
"purrr",
"tibble",
"stringr",
"forcats"
))
plot_em(core_tidyverse_stats)

LS0tDQp0aXRsZTogIkNSQU4gcGFja2FnZSBwb3B1bGFyaXR5Ig0KYXV0aG9yOiAiQEFuZGlAdGVjaC5sZ2J0Ig0Kb3V0cHV0OiANCiAgaHRtbF9ub3RlYm9vazogDQogICAgY29kZV9mb2xkaW5nOiBub25lDQotLS0NCg0KDQpgYGB7cn0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShkbHN0YXRzKQ0KbGlicmFyeShnZ3JlcGVsKQ0KbGlicmFyeShsdWJyaWRhdGUpDQpgYGANCg0KDQpgY3Jhbl9zdGF0c2AgZ2l2ZXMgdXMgZG93bmxvYWRzIHBlciBtb250aCwgc28gdGhleSB3aWxsIGJlIGluY29tcGxldGUgZm9yIHRoZSBjdXJyZW50IG1vbnRoLiBJJ2xsIGV4Y2x1ZGUgdGhlIGN1cnJlbnQgbW9udGggdG8gYWNjb3VudCBmb3IgdGhpcy4NCg0KSGVyZSdzIGEgcGxvdCBmdW5jdGlvbiwgZmFjdG9yZWQgb3V0IG9mIGEgcHJldmlvdXMgY29weSBhbmQgcGFzdGUgbWVzczoNCg0KYGBge3J9DQpwbG90X2VtIDwtIGZ1bmN0aW9uKGRsX2RhdCkgew0KICBmaXJzdF9vZl90aGlzX21vbnRoIDwtIGZsb29yX2RhdGUodG9kYXkoKSwgdW5pdCA9ICJtb250aCIpDQogIA0KICBkbF9kYXQgfD4NCiAgZmlsdGVyKHN0YXJ0IDwgZmlyc3Rfb2ZfdGhpc19tb250aCkgfD4NCiAgbXV0YXRlKGxhYmVsID0gaWZfZWxzZShzdGFydCA9PSBtYXgoc3RhcnQpLA0KICAgICAgICAgICAgICAgICAgICAgICAgIGFzLmNoYXJhY3RlcihwYWNrYWdlKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICBOQV9jaGFyYWN0ZXJfKQ0KICAgICAgICAgKSB8Pg0KICBnZ3Bsb3QoYWVzKA0KICAgIHggPSBzdGFydCwNCiAgICB5ID0gZG93bmxvYWRzLA0KICAgIGNvbG91ciA9IHBhY2thZ2UsDQogICAgbGFiZWwgPSBsYWJlbA0KICApKSArDQogIGdlb21fc21vb3RoKHNlID0gRkFMU0UpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgbGFicyh4ID0gIkRhdGUiLCB5ID0gIkRvd25sb2FkcyIsIGNvbG91ciA9ICJQYWNrYWdlIikgKw0KICBnZW9tX2xhYmVsX3JlcGVsKG5hLnJtID0gVFJVRSwgc2VnbWVudC5jb2xvdXIgPSBOQSkgKw0KICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsNCiAgc2NhbGVfeF9kYXRlKGV4cGFuZCA9IGV4cGFuc2lvbihtdWx0ID0gMC4yKSkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpjb21tYSkNCn0NCmBgYA0KDQoNCg0KKFNvbWUpIG1peGVkIG1vZGVscyBhbmQgU0VNIHBhY2thZ2VzOg0KDQpgYGB7cn0NCnBhY2tfc3RhdHMgPC0NCiAgY3Jhbl9zdGF0cyhjKCJsbWU0IiwgIm5sbWUiLCAic2VtIiwgImxhdmFhbiIsICJibG1lIiwgImJybXMiLCAicnN0YW5hcm0iKSkNCmBgYA0KDQoNCmBgYHtyIGRwaSA9IDMwMH0NCnBsb3RfZW0ocGFja19zdGF0cykNCmBgYA0KDQpTYW1lIGFnYWluIHRoZSBsb2cgc2NhbGU6DQoNCmBgYHtyfQ0KcGxvdF9lbShwYWNrX3N0YXRzKSArDQpzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpjb21tYSwgdHJhbnMgPSAibG9nMTAiKQ0KYGBgDQoNCg0KDQoNClBhY2thZ2VzIGZvciBtYXRjaGluZyBhbmQgcHJvcGVuc2l0eSBzY29yZSB3ZWlnaHRpbmc6DQoNCmBgYHtyfQ0KbWF0Y2hfcGFja2FnZXMgPC0NCiAgY3Jhbl9zdGF0cyhjKA0KICAgICJNYXRjaGluZyIsDQogICAgIk1hdGNoSXQiLA0KICAgICJ0d2FuZyIsDQogICAgIlBTd2VpZ2h0IiwNCiAgICAiY2VtIg0KICApKQ0KYGBgDQoNCg0KYGBge3J9DQpwbG90X2VtKG1hdGNoX3BhY2thZ2VzKQ0KYGBgDQoNCg0KYGBge3J9DQpwbG90X2VtKG1hdGNoX3BhY2thZ2VzKSArDQpzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gc2NhbGVzOjpjb21tYSwgdHJhbnMgPSAibG9nMTAiKQ0KYGBgDQoNCg0KVGhlc2UgcGFja2FnZXMgYXJlIGFsbCBpbnN0YWxsZWQgYXMgcGFydCBvZiB0aGUgdGlkeXZlcnNlLCBidXQgY2FuIGFsc28gYmUgaW5zdGFsbGVkIGluZGl2aWR1YWxseS4NCg0KDQpgYGB7cn0NCmNvcmVfdGlkeXZlcnNlX3N0YXRzIDwtDQogIGNyYW5fc3RhdHMoYygNCiAgICAiZ2dwbG90MiIsDQogICAgImRwbHlyIiwNCiAgICAidGlkeXIiLA0KICAgICJyZWFkciIsDQogICAgInB1cnJyIiwNCiAgICAidGliYmxlIiwNCiAgICAic3RyaW5nciIsDQogICAgImZvcmNhdHMiDQogICkpDQpgYGANCg0KYGBge3J9DQpwbG90X2VtKGNvcmVfdGlkeXZlcnNlX3N0YXRzKQ0KYGBgDQoNCg0KDQo=