如何标准化堆积条形图中条形的颜色?

How to standardise colours of bars in stacked bar charts?

所以我绘制了一些关于抗生素使用的堆叠条形图。每个图表中包含的抗生素在绘制的每个单独数据集之间都会有所不同。因此,例如,在图表 1 中,'antibiotic x' 可能绘制​​为红色,但在图表 2 中,它可能绘制为橙色。

我想知道是否有任何方法可以标准化着色,使抗生素 x 在我绘制的所有图表中都是相同的颜色?这样一来,如果所有抗生素 类 在所有图表中都相同,则可以更轻松地进行可视化。

我用来绘制其中一个堆叠条形图的示例代码如下;

datastack016 %>%
  mutate(Date = dmy(Date),
         Q = quarter(Date, with_year = TRUE)) %>%
  group_by(Q) %>% 
  summarise_if(is.numeric, sum, na.rm = TRUE) %>%
  gather(Key, Total, -Q) %>%
  ggplot(aes(Q, Total, fill = Key)) +
    geom_bar(stat = "identity") +
    scale_x_yearqtr(format = "%Y") + 
    ylab("Antibiotic Total (Grams)") + 
    xlab("Date (Quarters/Year)")`

如有任何帮助,我们将不胜感激! :)

您可以将颜色定义为命名向量并将其传递给 scale_fill_manual。请参阅下面的代码(只需将 scale_colour_manual 替换为 scale_fill_manual):

cols <- setNames(c("dodgerblue", "limegreen", "tomato"),
                 levels(iris$Species))

ggplot(iris, aes(Sepal.Width, Sepal.Length, colour = Species)) +
  geom_point() +
  scale_colour_manual(values = cols)

现在没有以下因素之一:

ggplot(iris[iris$Species != "setosa", ],
       aes(Sepal.Width, Sepal.Length, colour = Species)) +
  geom_point() +
  scale_colour_manual(values = cols)

请注意 cols 仍然包含 dodgerblue,但由于我们没有第一组 (setosa),因此已从图例中删除。