10

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

在此处输入图像描述

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}]))) 

在此处输入图像描述

4

1 回答 1

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

在此处输入图像描述

于 2013-06-06T12:56:57.287 回答