-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.Rmd
110 lines (92 loc) · 3.6 KB
/
README.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
108
---
output: github_document
---
```{r, include = FALSE}
knitr::opts_chunk$set(
message = FALSE,
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```
# ggcor
<!-- badges: start -->
[![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://www.tidyverse.org/lifecycle/#experimental)
<!-- badges: end -->
The goal of `ggcor` is to to provide a set of functions that be used to visualize simply and directly a correlation matrix based on 'ggplot2'.
## Installation
Now `ggcor` is not on cran, You can install the development version of ggcor from [GitHub](https://github.com/) with:
``` r
# install.packages("devtools")
devtools::install_github("houyunhuang/ggcor")
```
## Draw correlation plot quickly
This is a basic example which shows you how to draw correlation plot quickly:
```{r example01}
library(ggplot2)
library(ggcor)
quickcor(mtcars) + geom_colour()
quickcor(mtcars, type = "upper") + geom_circle2()
quickcor(mtcars, cor.test = TRUE) +
geom_square(data = get_data(type = "lower", show.diag = FALSE)) +
geom_mark(data = get_data(type = "upper", show.diag = FALSE), size = 2.5) +
geom_abline(slope = -1, intercept = 12)
```
## Mantel test plot
```{r example03,fig.height=4.6}
library(vegan)
library(dplyr)
data("varechem")
data("varespec")
set.seed(20191224)
corr <- fortify_cor(varechem, cor.test = TRUE, type = "upper")
mantel <- mantel_test(varespec, varechem,
spec.select = list(Spec01 = 1:7,
Spec02 = 8:18,
Spec03 = 19:37,
Spec04 = 38:44)) %>%
combination_layout(cor_tbl = corr) %>%
mutate(xend = xend + 1,
rd = cut(r, breaks = c(-Inf, 0.2, 0.4, Inf),
labels = c("< 0.2", "0.2 - 0.4", ">= 0.4")),
pd = cut(p.value, breaks = c(-Inf, 0.01, 0.05, Inf),
labels = c("< 0.01", "0.01 - 0.05", ">= 0.05")))
options(ggcor.link.inherit.aes = FALSE)
quickcor(corr) + geom_square() +
geom_link(aes(colour = pd, size = rd), data = mantel,
curvature = 0.05) +
geom_link_point(data = mantel) +
geom_start_label(aes(x = x - 0.5), hjust = 1, data = mantel) +
scale_size_manual(values = c(0.5, 1, 2)) +
scale_colour_manual(values = c("#D95F02", "#1B9E77", "#A2A2A288")) +
guides(size = guide_legend(title = "Mantel's r",
override.aes = list(colour = "grey35"),
order = 2),
colour = guide_legend(title = "Mantel's p",
override.aes = list(size = 3),
order = 1),
fill = guide_colorbar(title = "Pearson's r", order = 3)) +
expand_axis(x = -6)
```
# network
```{r}
library(tidygraph)
library(ggraph)
net <- fast_correlate(varespec) %>%
as_tbl_graph(r.thres = 0.5, p.thres = 0.05) %>%
mutate(degree = tidygraph::centrality_degree(mode = "all"))
ggraph(net, "circle") +
geom_edge_fan(aes(edge_width = r, edge_linetype = r < 0),
edge_colour = "grey80", show.legend = FALSE) +
geom_node_point(aes(size = degree, colour = name),
show.legend = FALSE) +
geom_node_text(aes(x = x * 1.08, y = y * 1.08,
angle = -((-node_angle(x, y) + 90) %% 180) + 90,
label = name), size = 4, hjust= "outward",
show.legend = FALSE) +
scale_edge_color_gradientn(colours = c("blue", "red")) +
scale_edge_width_continuous(range = c(0.1, 1)) +
coord_fixed(xlim = c(-1.5, 1.5), ylim = c(-1.5, 1.5)) +
theme_graph()
```