Я просто догадываюсь, как выглядят ваши данные (так как вы их не предоставили), поэтому я составил VERM
data.frame в примере ниже.Основная идея заключается в том, что вы должны отфильтровать, какие значения вам нужны в переменной Vermivora
(столбец).
library(tidyverse)
# Some made up data
VERM <- data.frame(Vermivora = c("gwwa", "bwwa", "hybrid", NA),
Road_Proximity = sample(4*10))
Я полагаю, это похоже на то, что вы получили, основываясь на описании вашей проблемы:
ggplot(VERM, aes(Vermivora, Road_Proximity, fill = Vermivora)) +
geom_boxplot()
Решение с dyplr
Фильтр для значений, которые вам нужны впеременная Vermivora.
VERM %>%
filter(Vermivora %in% c("gwwa", "bwwa")) %>%
ggplot(aes(x = Vermivora, y = Road_Proximity, fill = Vermivora)) +
geom_boxplot() +
scale_fill_manual(values = c("gwwa" = "yellow",
"bwwa" = "lightblue"))
Если вам нужен определенный порядок на оси OX, то закажите коэффициент Vermivora.
VERM %>%
filter(Vermivora %in% c("gwwa", "bwwa")) %>%
mutate(Vermivora = ordered(x = Vermivora,
levels = c("gwwa", "bwwa"))) %>%
ggplot(aes(x = Vermivora, y = Road_Proximity, fill = Vermivora)) +
geom_boxplot() +
scale_fill_manual(values = c("gwwa" = "yellow",
"bwwa" = "lightblue"))
Решение с data.table
Использование более краткого синтаксиса data.table
:
library(data.table)
library(magrittr) # for piping with %>% (not only dyplr use it;
# pipeline is a Unix trait not a dyplr trait)
setDT(VERM) # converts to data.table from data.frame
VERM[Vermivora %in% c("gwwa", "bwwa")] %>%
ggplot(aes(x = Vermivora, y = Road_Proximity, fill = Vermivora)) +
geom_boxplot() +
scale_fill_manual(values = c("gwwa" = "yellow",
"bwwa" = "lightblue"))
# If you need to order the factor Vermivora:
VERM[Vermivora %in% c("gwwa", "bwwa")] %>%
.[, Vermivora := ordered(x = Vermivora, levels = c("gwwa", "bwwa"))] %>%
ggplot(aes(x = Vermivora, y = Road_Proximity, fill = Vermivora)) +
geom_boxplot() +
scale_fill_manual(values = c("gwwa" = "yellow",
"bwwa" = "lightblue"))
Обратите внимание, что при решении вопроса почти всегда требуется просмотреть некоторые данные, относящиеся к вашей проблеме.Вы можете попробовать это, опубликовав вывод одной из следующих строк:
dput(VERM) # the entire data
dput(head(VERM, 20)) # the first 20 rows
dput(VERM[sample(x = nrow(VERM), size = 20),]) # a sample of 20 rows
# Or make up some data like I did in the above example.