ggplot2创建一个geom_hline图例而不浪费一个条形图

时间:2016-06-21 13:26:27

标签: r ggplot2 legend

我试图为使用ggplot2制作的复合图表生成一个好的图例,其中有一个躲闪的条形图和一条水平线,用于显示土壤中钡的参考值。问题是,hline图例的特征是"污染"也是barplot之一。我已经看到类似的主题试图调整其他提出的解决方案,但没有任何重大结果。

这是我的例子:

数据帧:

       Position   Year   Value
       Position 1 1999    12
       Position 2 1999    14
       Position 3 1999    15
       Position 1 2000    13
       Position 2 2000    11
       Position 3 2000    21
       Position 1 2001    12
       Position 2 2001    13
       Position 3 2001    16

代码:

    ggplot(input, aes(fill=Year , x=Position, y=Value)) +

    geom_bar(stat="identity",
    position="dodge",  size=0.1, width=0.5, show.legend=TRUE) +
    labs(title="Barium concentration in the soil") +
    xlab("Samples") +
    ylab("Concentration in ng/kg") +
    scale_y_continuous(limits = c(0, 30)) +
    #color of barplot
    scale_fill_manual(values=c("grey40", "grey70", "grey80")) +

    #limit value
    geom_hline(aes(yintercept=40, colour = "red"), size=0.9, alpha=0.8, show.legend=TRUE )

这是图表

chart obtained

正如您所看到的,hline图例的功能正在浪费一个条形图。

1 个答案:

答案 0 :(得分:3)

你可以这样做:

ggplot(input, aes(fill=Year , x=Position, y=Value)) +
  geom_bar(stat="identity", position="dodge",  size=0.1, width=0.5) +
  labs(title="Barium concentration in the soil") + xlab("Samples") +
  ylab("Concentration in ng/kg") +
  scale_y_continuous(limits = c(0, 30))+
  geom_hline(aes(yintercept=20, colour="limit"), size=0.9, alpha=0.8) +
  scale_fill_manual(values=c("grey40", "grey70", "grey80")) +
  scale_color_manual(name="Foo", values=c(limit="red")) +
  theme(legend.key = element_rect(fill = "white", colour = "white"))

情节如下:

enter image description here