{"metadata":{"kernelspec":{"name":"ir","display_name":"R","language":"R"},"language_info":{"name":"R","codemirror_mode":"r","pygments_lexer":"r","mimetype":"text/x-r-source","file_extension":".r","version":"4.0.5"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"install.packages('tidygraph')","metadata":{"execution":{"iopub.status.busy":"2022-03-09T10:50:22.011383Z","iopub.execute_input":"2022-03-09T10:50:22.013418Z","iopub.status.idle":"2022-03-09T10:50:32.442912Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"library(tidyverse)\nlibrary(tidygraph)\nlibrary(ggraph)","metadata":{"execution":{"iopub.status.busy":"2022-03-09T10:50:32.446287Z","iopub.execute_input":"2022-03-09T10:50:32.448054Z","iopub.status.idle":"2022-03-09T10:50:32.465636Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\"/kaggle/input/happywhaleindividualtaxonomy/final.csv\" %>%\n    read_csv(col_types = 'c')","metadata":{"execution":{"iopub.status.busy":"2022-03-09T10:50:32.468458Z","iopub.execute_input":"2022-03-09T10:50:32.470049Z","iopub.status.idle":"2022-03-09T10:50:32.592515Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"getNodes <- function(node) {\n    \"/kaggle/input/happywhaleindividualtaxonomy/final.csv\" %>%\n        read_csv(col_types = 'c') %>%\n        group_by({{node}}) %>%\n        summarise(\n            nbr_individuals = n_distinct(individual_id),\n            nbr_images = n(),\n        ) %>%\n        rename(name = {{node}})\n}\nnodes <- getNodes(infraorder) %>% \n    bind_rows(getNodes(family)) %>%\n    bind_rows(getNodes(genus)) %>%\n    bind_rows(getNodes(specy))","metadata":{"execution":{"iopub.status.busy":"2022-03-09T10:50:32.596529Z","iopub.execute_input":"2022-03-09T10:50:32.598406Z","iopub.status.idle":"2022-03-09T10:50:32.899084Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"getEdges <- function(edge1, edge2) {\n    \"/kaggle/input/happywhaleindividualtaxonomy/final.csv\" %>%\n        read_csv(col_types = 'c') %>%\n        group_by({{edge1}}, {{edge2}}) %>%\n        summarise(\n            counts = n()\n        ) %>%\n        select({{edge1}}, {{edge2}}) %>%\n        rename(from = {{edge1}}, to = {{edge2}})\n}\n\nedges <- getEdges(infraorder, family) %>%\n    bind_rows(getEdges(family, genus)) %>%\n    bind_rows(getEdges(genus, specy))","metadata":{"execution":{"iopub.status.busy":"2022-03-09T10:50:32.904043Z","iopub.execute_input":"2022-03-09T10:50:32.905992Z","iopub.status.idle":"2022-03-09T10:50:33.216815Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"g <- tbl_graph(nodes, edges)\ng","metadata":{"execution":{"iopub.status.busy":"2022-03-09T10:50:33.219831Z","iopub.execute_input":"2022-03-09T10:50:33.221836Z","iopub.status.idle":"2022-03-09T10:50:33.291473Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plot <- ggraph(g, layout = 'dendrogram', circular = TRUE) + \n  geom_edge_diagonal() + \n  geom_node_point(aes(filter = leaf, size = nbr_individuals)) + \n  coord_fixed() +\n geom_node_text(aes(label = name))\n\nggsave(\"plot.png\", plot, dpi = 600)","metadata":{"execution":{"iopub.status.busy":"2022-03-09T10:52:16.559988Z","iopub.execute_input":"2022-03-09T10:52:16.562139Z","iopub.status.idle":"2022-03-09T10:52:18.195625Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"![](plot.png)","metadata":{}}]}