首页 文章

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

提问于
浏览
2

我试图改变ggplot中的配色方案,除了调整传奇 . 但是,我似乎只能做其中一个,最近的命令覆盖另一个 .

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

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")), ...)
}

但是,当我将其与绘图代码结合使用时,我会收到一条警告标尺'fill'已经存在 . 为'fill'添加另一个比例,它将取代现有的比例 .

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

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 回答

  • 2

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

    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'))
    

相关问题