Могу ли я использовать direct.label () с scale_colour_manual () ggplot? - PullRequest
1 голос
/ 26 июля 2010

Следующий код назначает ручную цветовую шкалу красного и черного для моих точек:

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 Ответ

3 голосов
/ 08 сентября 2010

Это происходит потому, что 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(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...