-
Notifications
You must be signed in to change notification settings - Fork 1
/
AllenBrainAtlasMouseCircularDendrogram.Rmd
66 lines (59 loc) · 1.79 KB
/
AllenBrainAtlasMouseCircularDendrogram.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
---
title: "Allen Mouse Brain Atlas Dendrogram"
author: Frederico Kiffer, PhD
output: html_notebook
---
```{r}
library(tidyverse)
library(ggraph)
library(igraph)
```
Load Dimmension 1
```{r}
d1 <- read_csv('https://raw.githubusercontent.com/FKiffer/AllenBrainAtlasCircularDendrogram-Mouse-CCFv3-/main/Dimmension%201.csv')
d1
```
Load Dimmension 2
```{r}
d2 <- read_csv("https://raw.githubusercontent.com/FKiffer/AllenBrainAtlasCircularDendrogram-Mouse-CCFv3-/main/Dimmension%202.csv")
d2
```
Join Dimmensions
```{r}
hierarchy <- rbind(d1, d2)
hierarchy
```
Load list of vertices
```{r}
vertices <- read_csv("https://raw.githubusercontent.com/FKiffer/AllenBrainAtlasCircularDendrogram-Mouse-CCFv3-/main/Vertices.csv")
vertices
```
Designate angle and positioning of leaves
```{r}
#this script works on any dataset of n vertices
vertices
vertices$id=NA
myleaves=which(is.na( match(vertices$name, hierarchy$From) ))
#be sure to change the above argument to your hierarchy/edge dataframe
nleaves=length(myleaves)
vertices$id[ myleaves ] = seq(1:nleaves)
vertices$angle= 90 - (360 * (vertices$id / nleaves))
vertices$hjust<-ifelse(vertices$angle < -90, 1, 0)
vertices$angle<-ifelse(vertices$angle < -90, vertices$angle+180, vertices$angle)
vertices
mygraph <- graph_from_data_frame(hierarchy, vertices = vertices)
```
graph dendrogram with leaf names
```{r fig1, fig.height = 12, fig.width = 12}
ggraph(mygraph, layout = 'dendrogram', circular = TRUE) +
geom_edge_link(size=0.4, alpha=0.1) +
geom_node_text(aes(x = x*1.01, y=y*1.01, filter = leaf, label=name,
angle = angle, hjust=hjust), size=2.5, alpha=1) +
coord_fixed() +
theme_void() +
theme(
legend.position="none",
plot.margin=unit(c(0,0,0,0),"cm"),
) +
expand_limits(x = c(-1.3, 1.3), y = c(-1.3, 1.3))
```