我需要在图例标签中使用子/上标.但是,如果我使用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)

不那么优雅的解决方案是删除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)
