ggplot2 使用列值作为图例

ggplot2 use column values as legend

如何使用列中的一些自定义值作为图例?我目前

library(ggplot2)

test <- data.frame(condition = as.factor(c("A", "A", "A", "B", "B", "B", "C", "C", "C")),
                       value = c(4, 5, 2, 3, 4, 5, 7, 1, 0),
                       color = as.factor(c(1, 1, 1, 1, 1, 1, 2, 2, 2)))
ggplot(
    test,
    aes(x=condition, y=value, color=color)
) +
    geom_boxplot()

这给了我:

但我希望图例包含 3 个项目,每个条件一个(带有自定义标签,当然还有正确的颜色)。我没能做到这一点。即使在没有颜色的更简单的情况下:

ggplot(test, aes(x=condition, y=value)) + geom_boxplot()

我会得到一张没有图例的图像,我真的不知道如何添加一个使用特定列作为数据的图像。

试试这个:

library(ggplot2)

test <- data.frame(condition = as.factor(c("A", "A", "A", "B", "B", "B", "C", "C", "C")),
                   value = c(4, 5, 2, 3, 4, 5, 7, 1, 0),
                   color = as.factor(c(1, 1, 1, 1, 1, 1, 2, 2, 2)))
ggplot(
  test,
  aes(x=condition, y=value, color=interaction(condition,color))
) +
  geom_boxplot()+
  scale_color_manual(values=c('tomato','tomato','cyan'),
                     labels=c('1','1','2'))+
  labs(color='color')

输出: