Это может быть не совсем то, что вы хотели. Возможно, вам придется использовать альтернативные способы, чтобы получить цвета, которые вам нравятся. Это только один из способов решить вашу проблему. Надеюсь, поможет.
library(ggplot2)
library(cowplot)
data2 <- tibble::tribble(
~Color, ~Item, ~Count, ~Year,
"Blue", "Bag", 50, "2009-2011",
"Blue", "Wallet", 60, "2009-2011",
"Green", "Shoes", 80, "2009-2011",
"Green", "Shirt", 90, "2009-2011",
"Yellow", "Flower", 20, "2009-2011",
"Yellow", "Bees", 30, "2009-2011",
"Blue", "Bag", 50, "2009-2012",
"Blue", "Wallet", 60, "2009-2012",
"Green", "Shoes", 90, "2009-2012",
"Green", "Shirt", 20, "2009-2012",
"Yellow", "Flower", 10, "2009-2012",
"Yellow", "Bees", 5, "2009-2012"
)
data2$Count_final <- with(data2, Count * c(1, -1)[(Color == "Yellow") + 1])
data2$Item = factor(data2$Item,
levels=c("Accessories","Bag","Bees", "Flower", " ",
"Non-accessories", "Shirt","Shoes","Wallet"))
full_plot <- ggplot(data=data2)+
geom_bar(aes(x=Year,y=Count_final,fill=Item),stat="identity",position="identity") +
scale_y_continuous(labels=abs)+
theme_bw(base_size=18) +
ylab("Count")
full_plot +
scale_fill_manual(values=c("white", "#4575B4","#74ADD1","#ABD9E9",
"white","white", "#800026","#FC4E2A","#FEB24C"),
drop=FALSE)+
theme(legend.position="right",
legend.title=element_blank())
Создано в 2020-01-06 пакетом Представить (v0.3.0)
Редактировать
Я подумал, что здесь будет проще объяснить это на ваши вопросы, чем в поле для комментариев. В этом подходе используется один набор ggplot
меток легенд. Добавляя пробелы и новые метки, это выглядит как два набора легенд. Сначала мы добавляем 3 новых уровня в переменную term
: «Аксессуары», «», «Не аксессуары». В следующем порядке:
data2$Item = factor(data2$Item,
levels=c("Accessories","Bag","Bees", "Flower", " ",
"Non-accessories", "Shirt","Shoes","Wallet"))
Затем в ggplot
назначьте пробелы для этих 3 уровней. Поскольку для этих уровней нет фактических значений, они будут отброшены по умолчанию. Поэтому мы использовали drop = FALSE
, чтобы сохранить их.
Вы можете найти несколько существующих пакетов, полезных для альтернативного решения ваших проблем. Я чувствую, что этот подход является более интуитивным.