Я хотел бы покрасить коробки в своем блокпосте, используя шкалу палитры для непрерывной переменной.
Пример данных:
Sample <- c('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I')
Counts <- c(8, 10, 7, 15, 19, 16, 11, 13, 14)
Group <- c('Group1', 'Group1', 'Group1', 'Group2', 'Group2', 'Group2', 'Group3', 'Group3', 'Group3')
Factor <- c('positive', 'positive', 'negative', 'negative', 'negative', 'negative', 'positive', 'negative', 'negative')
df = data.frame(Sample, Counts, Group, Factor)
df
bxplt <- ggplot(df, aes(x=Group, y=Counts)) +
geom_boxplot()
bxplt
Это создает блокпост, подобный этому ![Example Boxplot](https://i.stack.imgur.com/RjNts.png)
Я хочу включить представление переменной «Фактор» в тот же график.Из-за сложности моих реальных данных я хочу упростить сообщение, раскрасив поля на блокпосте, используя цветовую шкалу, которая отражает соотношение положительного: отрицательного в столбце «Фактор».Я получаю отношения, используя dplyr, как это:
df %>%
group_by(Factor , Group) %>%
summarise(n = n()) %>%
group_by(Group) %>%
summarise(
pos_Percent = paste0((n[Factor == "positive"] / sum(n)) * 100 , "%") ,
neg_Percent = paste0((n[Factor == "negative"] / sum(n) * 100) , "%")
)
Вывод:
# A tibble: 3 x 3
Group pos_Percent neg_Percent
<fct> <chr> <chr>
1 Group1 66.6666666666667% 33.3333333333333%
2 Group2 % 100%
3 Group3 33.3333333333333% 66.6666666666667%
Я хочу, чтобы ящики с полями были окрашены на основе значений 'pos_Percent', то есть 'Group1будет 67%, группа 2 ноль и группа 3 33%.Я хочу установить непрерывную цветовую палитру, используя эти переменные, например, «Blues» от Rcolorbrewer, но я не уверен, что делать дальше.
ОБНОВЛЕНИЕ Решение, которое сработало для меня (с iod) -
summary<-df %>%
group_by(Group) %>%
summarise(
pos_Percent = sum(Factor == "positive") / n(),
neg_Percent = sum(Factor == "negative") / n())
newdf<-left_join(df, summary)
ggplot(newdf, aes(x=Group, y=Counts)) +
geom_boxplot(aes(fill=pos_Percent))