#r #ggplot2 #phyloseq
Вопрос:
Я изо всех сил пытаюсь понять, почему legend.horizontal
моя ось легенды не вращается, поэтому она не отображается вертикально? Любая помощь будет очень признательна.
library(phyloseq)
library(ggplot2)
##phylum level
ps_tmp <- get_top_taxa(physeq_obj = ps.phyl, n = 10, relative = TRUE, discard_other = FALSE, other_label = "Other")
ps_tmp <- name_taxa(ps_tmp, label = "Unkown", species = T, other_label = "Other")
phyl <- fantaxtic_bar(ps_tmp, color_by = "phylum", label_by = "phylum",facet_by = "TREATMENT", other_label = "Other", order_alg = "as.is")
phyl theme(legend.direction = "horizontal", legend.position = "bottom", )
Комментарии:
1. Я не знаю, какой пакет вы используете, поэтому не могу протестировать, но вместо
legend.direction()
чего-то вроде » направляющие(заполнение = guide_legend(nrow = 1, byrow = TRUE)) » может сработать
Ответ №1:
Условные обозначения для дискретных значений сами по себе не имеют формального направления и расположены таким ggplot2
образом, чтобы они наилучшим образом соответствовали вашим данным. Вот почему такие вещи, как legend.direction
здесь, не будут работать. У меня нет phyloseq
пакета или доступа к вашим конкретным данным, поэтому я покажу вам, как это работает и как вы можете возиться с легендой, используя воспроизводимый пример набора данных.
library(ggplot2)
set.seed(8675309)
df <- data.frame(x=LETTERS[1:8], y=sample(1:100, 8))
p <- ggplot(df, aes(x, y, fill=x)) geom_col()
p
По умолчанию ggplot помещает нашу легенду справа и организует ее вертикально в один столбец. Вот что происходит, когда мы перемещаем легенду на дно:
p theme(legend.position="bottom")
Теперь ggplot считает, что лучше всего поместить эту легенду в 4 столбца по 2 строки в каждом. Как уже упоминалось в u/Tech, вы можете использовать функции, чтобы указать, как выглядит легенда. guides()
В этом случае мы будем указывать наличие 2 столбцов вместо 4. Нам нужно только указать количество столбцов (или строк), а ggplot вычислит остальное.
p theme(legend.position="bottom")
guides(fill=guide_legend(ncol=2))
Итак, чтобы получить «горизонтально расположенную» легенду, вам просто нужно указать, что должна быть только одна строка:
p theme(legend.position="bottom")
guides(fill=guide_legend(nrow=1))