时间:2010-07-26 18:25:48

标签: r ggplot2

以下代码为我的观点指定了红色和黑色的手动色标:

require(ggplot2)
require(directlabels)
dtest <- data.frame(x=1:20,
                  y=rnorm(20,0,5),
                  v=seq(1,2))
p <- ggplot(dtest, aes(x=x,y=y,color=as.factor(v))) + geom_point() + scale_colour_manual(values=c("red","black"))
p #this looks good; red and black as intended

direct.label(p) #this falls back on the default colors

但是当我将direct.label()应用于同一个图时,它会覆盖色标,而不是ggplot默认值。有办法防止这种情况吗?如果没有,那么将新颜色分配给默认ggplot比例的最佳方法是什么? 谢谢, 马特

1 个答案:

答案 0 :(得分:3)

这是因为direct.label(p)通过将标签geom添加到p,然后通过隐藏颜色图例来操作,因为将颜色标记两次将是多余的。隐藏颜色图例的一种方法是添加scale_colour_discrete(legend = FALSE),这就是我在direct.label中所做的。因此,当directlabels应用scale_colour_discrete时,您的scale_colour_manual将会丢失。解决方法是使用以下习语:

p <- ggplot(...)
direct.label(p)+
  scale_colour_manual(...)