-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path0_Dendogram.Rmd
109 lines (89 loc) · 3.82 KB
/
0_Dendogram.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# 1. Load libraries
```{r}
library(tidyverse)
library(ggdendro)
```
# 2. Dendogram
```{r}
# Import data
# Feature_correspondence
features <- read.csv("../featureCorrespondence_MS2.csv", row.names = 1)
# transpose
features <- t(features)
#features <- features[-c(7,8),]
# Metadata
metadata <- read.csv("../metadata.csv")
#metadata <- metadata[-c(7,8),]
# Normalize data, row wise normalisation
#dat.n <- scale(t(features))
dat.n <- t(features)
# Put data back in original form
dat.tn <- t(dat.n)
# Calculate distance between experiments in rows
d1 <- dist(dat.n, method = "euclidean", diag = FALSE, upper = FALSE)
d2 <- dist(dat.tn, method = "euclidean", diag = FALSE, upper = TRUE)
# Clustering distance between experiments using Ward linkage
c1 <- hclust(d1, method = "ward.D2")
# Clustering distance between proteins using Ward linkage
c2 <- hclust(d2, method = "ward.D2")
# Build dendogram object from hclust results
dend_c2 <- as.dendrogram(c2)
# Extract the data (for rectangular lines)
# Type can be "rectangle" or "triangle"
dend_data <- dendro_data(dend_c2, type = "rectangle")
# What contains dend_data
names(dend_data)
#head(dend_data$labels)
dend_labels <- dend_data$labels
dend_labels$label <- gsub(".", '-', dend_labels$label, fixed = T)
dend_data$labels <- merge(dend_labels, metadata, by.x ='label', by.y = 'SampleCode')
listColors <- c('Brevideciduous' = '#AA3377', 'Deciduous' = '#117733')
listShapes <- c('Red' = 19, 'White' = 17)
# Plot line segments and add labels
p <- ggplot() +
geom_segment(data=dend_data$segments, aes(x = x, y = y, xend = xend, yend = yend)) +
geom_point(data=dend_data$labels, aes(x=x, y=y-3, shape=OakType, color=LeafLife), size=4) +
#geom_point(data=dend_data$labels, aes(x=x, y=-3, shape=trt), size=2) +
geom_text(data = dend_data$labels, aes(x, y=-6, label = itSpeciesName), parse = T,
hjust=0, size = 5, color='black', fontface="bold", show.legend = F) +
coord_flip() +
scale_y_reverse(expand = c(0, 70)) +
scale_x_continuous(breaks = dend_data$labels$x,
labels = dend_data$labels$SpeciesName, position = "top") +
scale_colour_manual(values=listColors) +
scale_shape_manual(values = listShapes) +
theme_minimal(base_size = 10) +
theme(axis.title = element_blank(),
# axis.text.x = element_text(),
axis.ticks.x = element_line(),
axis.line.x = element_line(),
axis.text.y = element_text( face="bold", color="white"),
panel.grid = element_blank(),
legend.title = element_blank(),
legend.position = "top")
print(p)
ggsave('Dendogram_Features_euclidean_hclust_SpeciesName.png',units=c('in'),width=9,height=6,dpi=300,p)
p <- ggplot() +
geom_segment(data=dend_data$segments, aes(x = x, y = y, xend = xend, yend = yend)) +
geom_point(data=dend_data$labels, aes(x=x, y=y-3, shape=OakType, color=LeafLife), size=3) +
#geom_point(data=dend_data$labels, aes(x=x, y=-3, shape=trt), size=2) +
geom_text(data = dend_data$labels, aes(x, y=-6, label = label, color=OakType),
hjust=0, size = 3, color = 'black', fontface="bold", show.legend = F) +
coord_flip() +
scale_y_reverse(expand = c(0, 30)) +
scale_x_continuous(breaks = dend_data$labels$x,
labels = dend_data$labels$SpeciesName, position = "top") +
scale_colour_manual(values=listColors) +
scale_shape_discrete(name="Oak Type") +
theme_minimal() +
theme(axis.title = element_blank(),
axis.text.x = element_text(size=10),
axis.ticks.x = element_line(),
axis.line.x = element_line(),
axis.text.y = element_text(size = 10, face="bold", color="white"),
panel.grid = element_blank(),
legend.title = element_blank(),
legend.position = "top")
print(p)
ggsave('Dendogram_Features_euclidean_hclust_SampleCode.png',units=c('in'),width=9,height=6,dpi=300,p)
```