如何对一组细分的特定颜色? R ggplot2

时间:2017-07-18 20:41:20

标签: r ggplot2

如果我有样本数据并使用ggplot2 geom_segment绘制它:

library(ggplot2)
df1 <- data.frame(p=c(1,2), f=c("A","B"))
df2 <- data.frame(p=c(3,4), f=c("C","D"))
ggplot() + 
geom_segment(data=df1, mapping=aes(x=p-0.5, xend=p+0.5, y=1, yend=1, color=f)) + 
geom_segment(data=df2, mapping=aes(x=p-0.5, xend=p+0.5, y=1, yend=1, color=f))

结果数字将为: enter image description here

我无法理解为什么两个单独的geom_segment()图层共享同一个图例?这种行为背后的逻辑是什么?

如何手动设置线条的颜色&#34; A&#34;并且&#34; B&#34;? 我试图使用以下命令更改它们:

ggplot() + 
geom_segment(data=df1, mapping=aes(x=p-0.5, xend=p+0.5, y=1, yend=1, color=f)) + 
scale_color_manual(values=c("A"="red", "B"="blue")) +  
geom_segment(data=df2, mapping=aes(x=p-0.5, xend=p+0.5, y=1, yend=1, color=f))

但会显示错误消息:

  

错误:手动刻度值不足。 4需要但只有2   提供。

非常感谢你

1 个答案:

答案 0 :(得分:1)

您可以使用scale_color_manual:

手动设置所有细分的颜色
ggplot() + geom_segment(data = df1,mapping = aes(x=p-0.5,xend = p + 0.5, y = 1,yend = 1, color=f)) +
    geom_segment(data = df2,mapping = aes(x=p-0.5,xend = p + 0.5, y = 1,yend = 1,color = f))+
    scale_color_manual(values=c("B"="blue", "A"="green", "D"="red","C"="yellow"))