library(tidyverse)
user_repo_fun <- read_csv("https://raw.githubusercontent.com/EvaMaeRey/mytidytuesday/refs/heads/main/2024-11-19-gg-prefixes/exported_funs_exts_ggplot2_tidyverse_org.csv")
# user_repo_fun %>% distinct(user, repo) # 137.. not 140
user_repo_fun %>%
ggplot() +
aes(id = repo) +
ggcirclepack::geom_circlepack() +
ggcirclepack::geom_circlepack_text(color = "whitesmoke") +
aes(size = after_stat(1/nchar(id)*area)) +
ggstamp::theme_void_fill("midnightblue") +
coord_equal()

last_plot() +
aes(id = user)

last_plot() +
aes(id = fun_exported %>% str_extract(".*?_"))

last_plot() +
aes(id = fun_exported %>% str_extract(".+_"))

# last_plot() %+%
# (user_repo_fun %>%
# filter(fun_exported %>% str_extract(".+_")))
# layer_data(i = 2)
library(tidyverse)
pkgs <- as_tibble(tools::CRAN_package_db())
gg_pkgs <- pkgs %>%
select(Package, Depends, Imports, Suggests) %>%
filter(
str_detect(Package, "^gg"),
if_any(-Package, ~ str_detect(.x, "ggplot2"))
) %>%
mutate(
dep_grid = str_detect(Depends, "\\bgrid\\b") | str_detect(Imports, "\\bgrid\\b"),
dep_dplyr = str_detect(Depends, "\\bdplyr\\b") | str_detect(Imports, "\\bdplyr\\b")
) %>%
drop_na()
gg_pkgs %>%
pivot_longer(cols = dep_grid:dep_dplyr) %>%
filter(value) %>%
select(Package, name, everything()) ->
gg_pkgs_edgelist
gg_pkgs_edgelist %>%
ggedgelist:::ggedgelist_quick(include_names = T,
layout = "fr") +
ggforce::geom_mark_hull(
aes(x = x, y = y)
)

gg_pkgs_tbl_graph <- tidygraph::as_tbl_graph(gg_pkgs_edgelist)
gg_pkgs_tbl_graph %>%
tidygraph::activate(nodes) %>%
as_tibble() %>%
mutate(is_import = name %in% c("dep_grid", "dep_dplyr")) %>%
mutate(node_color = case_when(name == "dep_dplyr" ~ "magenta",
name == "dep_grid" ~ "khaki4",
TRUE ~ "darkgrey")) %>%
mutate(name = ifelse(name == "dep_grid", "imports grid", name)) %>%
mutate(name = ifelse(name == "dep_dplyr", "imports dplyr", name)) %>%
mutate(node_size = is_import*2.5 + .8) ->
gg_pkgs_tbl_graph_nodes
library(threejs)
fed <-
tidygraph::as.igraph(gg_pkgs_tbl_graph)
igraph::graph_attr(fed, "layout") <- NULL
V(fed)$size <- gg_pkgs_tbl_graph_nodes$node_size
V(fed)$color <- gg_pkgs_tbl_graph_nodes$node_color
V(fed)$shape <- gg_pkgs_tbl_graph_nodes$name
E(fed)$linewidth <- .25
graphjs(g = fed, bg = "gray10",
showLabels = T,
layout = list(
layout_with_fr(fed, dim = 3)),
main = "")