如果我有示例数据并使用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))
结果图将会是:
我不明白为什么两个独立的geom_segment()层共享同一个图例?这种行为背后的逻辑是什么?
我该如何手动设置线条“A”和线条“B”的颜色? 我尝试使用以下命令更改它们:
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 个。
非常感谢您。
color
是一个单一的美学属性,即使您在多个几何对象中使用color
作为美学映射,它也只会产生一个图例。scale_color_manual
要求颜色数量等于映射到颜色美学的所有变量的唯一值的数量(在这种情况下为四个)。四个值的默认颜色为hcl(seq(15,375,length=5)[1:4], 100, 65)
,或者在映射到颜色的变量具有 n 个不同水平时,通用公式为hcl(seq(15,375,length=n+1)[1:n], 100, 65)
。 - eipi10