使用表达式标签时,请合并填充和颜色图例

Rol*_*and 9 r ggplot2

我需要在图例标签中使用子/上标.但是,如果我使用label相应比例的参数,则颜色和填充比例不再组合.

有没有办法解决这个或不同的方式来使用传说中的子/上标?

DF <- data.frame(x=1:10,y=(1:10)^2,
                 ymax=(1:10)^2.2,
                 ymin=(1:10)^1.8,
                 fac=rep(c("a","b"),each=5))

library(ggplot2)
p <- ggplot(DF,aes(x=x,y=y,ymin=ymin,ymax=ymax,colour=fac,fill=fac)) +
  geom_line() +
  geom_ribbon(alpha=0.5)

print(p)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

p +  scale_color_discrete(labels=c("a"=expression(a[{foo}]),
                                   "b"=expression(b[{bar}]))) +
     scale_fill_discrete(labels=c("a"=expression(a[{foo}]),
                                  "b"=expression(b[{bar}]))) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Did*_*rts 7

不那么优雅的解决方案是删除fill图例然后override.aes=guides()函数内使用color=图例.对于这个图例,我们可以设置自己的fill=值.唯一的问题是你必须知道颜色名称.我认为这会更容易,scale_color_manual()因为您已经提供了自己的颜色值.

p +  scale_color_discrete(labels=c("a"=expression(a[{foo}]),
                                   "b"=expression(b[{bar}]))) +
  scale_fill_discrete(guide="none")+
  guides(color=guide_legend(override.aes=list(fill=c("#F8766D","#00BFC4"))))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述