更改ggplot中的配色方案并能够编辑图例

时间:2015-10-29 12:35:35

标签: r plot ggplot2

除了调整图例之外,我还试图改变ggplot中的配色方案。但是,我似乎只能做其中一个,最近的命令会覆盖另一个。

我在这里有一个MWE,所以这只是创建一个带有自定义图例的虚拟情节,在我的图例标题和因子变量中有多个单词。

library(ggplot2)

set.seed(17)
df <- data.frame(method=sample(c('A', 'B', 'C'), 20, replace=T),
             score=runif(20),
             group=sample(0:1, 20, replace=T))
ggplot(df, aes(x=method, y=score, fill=factor(group))) +
  geom_boxplot() +
  scale_fill_discrete("Multi word title", breaks=c(0, 1), labels=c('Group 1', 'Group 2'))

Initial image

然后我获得了以下漂亮的配色方案(来自here),我想用上面的情节。

library(scales)
scale_fill_Publication <- function(...){
  discrete_scale("fill","Publication",manual_pal(values = c("#386cb0","#fdb462","#7fc97f","#ef3b2c","#662506","#a6cee3","#fb9a99","#984ea3","#ffff33")), ...)
}

但是,当我将其与绘图代码结合使用时,我会收到警告 Scale for&#39; fill&#39;已经存在了。为&#39; fill&#39;添加另一个比例,它将取代现有的比例。

从结果图中可以清楚地看到,这条最新指令已经覆盖了图例修改。我可以更改数据框中的因子名称,但这对于用空格分隔的单词不起作用。

ggplot(df, aes(x=method, y=score, fill=factor(group))) +
  geom_boxplot() +
  scale_fill_discrete("Multi word title", breaks=c(0, 1), 
                      labels=c('Group 1', 'Group 2')) +
  scale_fill_Publication()

Incorrect image

1 个答案:

答案 0 :(得分:2)

您只需要一个填充比例。将标签和标题放在定义的比例中,它使用与其他比例相同的参数。

ggplot(df, aes(x=method, y=score, fill=factor(group))) +
      geom_boxplot() +
      scale_fill_Publication("Multi word title", breaks=c(0, 1), 
                          labels=c('Group 1', 'Group 2'))