scale_fill_discrete 有间断点和自定义色阶?

scale_fill_discrete with breaks and custom color scale?

我在选择绘图的自定义颜色时遇到问题,我正在尝试将自己的值添加到绘图中,但我似乎无法理解应该将自定义颜色向量放在哪里:

col <- c("#004d8d", "#cc2701", "#e5b400")

现在是剧情代码:

p1 <- ggplot(data = densdf1, mapping = aes(x = x, y = y)) +
  geom_area(data = densdf1[densdf1$CI,], 
            aes(fill = Electrode, color = Electrode),
            outline.type = "full", alpha = 0.3, size = 1) +
  geom_line(aes(color = Electrode), size = 1) +
  scale_fill_discrete(breaks=c("Fz","Cz","Pz")) +
  guides(colour = "none") +
  geom_vline(xintercept = 0) +
  lims(x = c(-3, 2), y = c(0, 2.25)) +
  labs(title="INTERVAL 225-275ms", x="VALUES", y="DENSITY") +
  theme_bw() +   
  theme(axis.text=element_text(size=10),
        axis.title=element_text(size=12),
        plot.title=element_text(size=14))

这是默认颜色的图,看起来非常好,但我想自定义颜色。

如您所见,有一条等高线和密度区域需要着色。

我尝试改变美学,但我认为我不理解其中的逻辑。我也尝试使用 scale_manual_fill(values = col) 删除 scale_fill_discrete(breaks=c("Fz","Cz","Pz")) 但它只适用于内部区域。

哪位ggplot2高手可以指点一下吗?谢谢!

在 aes(...) 部分定义比例,并且必须为每个比例调整颜色。在您的情况下,它将是“填充”和“颜色”比例,因此必须添加以下两行来调整两个比例:

scale_color_manual(values = col, breaks = c("Fz", "Cz", "Pz")) +
scale_fill_manual(values = col, breaks = c("Fz", "Cz", "Pz")) +

如果你想确保某个类别获得某种颜色,你必须指定中断,向量的顺序对应于颜色向量的顺序。