Я пытаюсь создать собственный график некоторых веганских результатов rda в ggplot2. Я по сути изменяю направления, как показано в Нанесение RDA (веганский) в ggplot, поэтому что я использую метки формы и цвета, чтобы передать некоторую информацию о точках выборки.
Я провел анализ PCA с веганом следующим образом
library(vegan)
library(dplyr)
library(tibble)
library(ggplot2)
cbPalette <- c("#000000", "#E69F00", "#56B4E9", "#009E73", "#0072B2", "#D55E00", "#CC79A7", "#F0E442")
data(dune)
data(dune.env)
dune.pca <- rda(dune)
uscores <- data.frame(dune.pca$CA$u)
uscores1 <- inner_join(rownames_to_column(dune.env), rownames_to_column(data.frame(uscores)), type = "right", by = "rowname")
vscores <- data.frame(dune.pca$CA$v)
Я могу сделать простую диаграмму
biplot(dune.pca)
Теперь, допустим, я хочу узнать больше об условиях управления, которым были подвержены эти различные образцы. Я раскрашиваю и формирую код и рисую с помощью ggplot.
p1 <- ggplot(uscores1, aes(x = PC1, y = PC2, col = Management,
shape = Management)) +
geom_point() +
scale_color_manual(values=cbPalette) +
scale_fill_manual(values=cbPalette) +
scale_shape_manual(values = c(21:25)) +
theme_bw() +
theme(strip.text.y = element_text(angle = 0))
p1
Далее, я действительно хотел бы добавить несколько стрелок двух графиков, которые показывают нам оси, соответствующие изобилию видов. Я могу использовать ggplot для построения только этих стрелок следующим образом:
p2 <- ggplot() + geom_text(data = vscores, aes(x = PC1, y = PC2, label = rownames(vscores)), col = 'red') +
geom_segment(data = vscores, aes(x = 0, y = 0, xend = PC1, yend = PC2), arrow=arrow(length=unit(0.2,"cm")),
alpha = 0.75, color = 'darkred')
p2
Но что мне действительно хотелось бы сделать, так это получить эти стрелки и точки на одном и том же сюжете. В настоящее время я пытаюсь использовать этот код:
p3 <- p1 + geom_text(data = vscores, aes(x = PC1, y = PC2, label = rownames(vscores)), col = 'red') +
geom_segment(data = vscores, aes(x = 0, y = 0, xend = PC1, yend = PC2), arrow=arrow(length=unit(0.2,"cm")),
alpha = 0.75, color = 'darkred')
p3
К моему раздражению, это дает только пустой график (пустое окно, сообщений об ошибках). Ясно, что я что-то упускаю или что-то неправильно масштабирую. Есть какие-нибудь предложения о том, как лучше всего наложить два последних графика?