Skip to content

Instantly share code, notes, and snippets.

@jeroen
Last active January 23, 2021 10:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jeroen/fa0a26c4a8b52fe81d1d20e8569073e7 to your computer and use it in GitHub Desktop.
Save jeroen/fa0a26c4a8b52fe81d1d20e8569073e7 to your computer and use it in GitHub Desktop.
Plot reverse dependencies and download statistics
library(cranlogs)
library(dplyr)
library(lubridate)
library(ggplot2)
library(hrbrthemes)
pkgs <- c("curl", "RCurl")
df <- cranlogs::cran_downloads(pkgs, from = '2015-01-01', to = '2020-10-31')
monthly <- df %>% group_by(package = package, date=floor_date(date, "month")) %>%
summarize(count=sum(count))
ggplot(monthly, aes(x=date, y=count, group=package, color=package)) +
geom_smooth(se=F) +
geom_point() +
ggtitle("Popularity of libcurl CRAN packages (downloads)") +
theme_ipsum() +
scale_color_ipsum() +
ylab("Download count")
library(hrbrthemes)
library(ggplot2)
library(tidyr)
count_revdeps <- function(pkgs, start = '2015-01-01', end = '2020-11-01', recursive = TRUE, n = 25){
start <- as.Date(start)
end <- as.Date(end)
dates <- seq(start, end, length.out = n)
out <- matrix(nrow = n, ncol = length(pkgs))
for(i in seq_along(dates)){
date <- dates[i]
cat(sprintf("Getting data from %s\n", date))
url <- paste0('https://cran.microsoft.com/snapshot/', date)
db <- available.packages(repos = url)
deps <- tools::package_dependencies(pkgs, db = db, reverse = TRUE, recursive = recursive)
out[i,] <- vapply(deps, length, integer(1))
}
colnames(out) <- pkgs
cbind(date=dates, as.data.frame(out))
}
plot_revdeps <- function(data){
df <- tidyr::pivot_longer(data, cols = names(data)[-1], names_to = 'package', values_to = 'count')
ggplot(df, aes(x=date, y=count, group=package, color=package)) +
geom_line() +
geom_point() +
ggtitle("Popularity of libcurl CRAN packages over time") +
theme_ipsum() +
scale_color_ipsum() +
ylab("Reverse dependencies")
}
pkgs <- c("curl", 'RCurl')
revdeps <- count_revdeps(pkgs)
plot_revdeps(revdeps)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment