在没有条形的图例中显示geom_abline

时间:2016-01-08 03:44:19

标签: r ggplot2 geom-bar

我想在图例中通过geom_abline显示添加的行,因为条形图在x轴标签中表示。

多么尴尬,不知道我是怎么忘记玩具数据的。我也清理了这个例子,确保我运行的是最新版本的R和ggplot(并重塑!)我忘了它有时会如何产生影响

最终产品是一个条形图,其中添加的行(表示平均值),此信息显示在图例中,因此红色虚线表示"县平均值"。

library(ggplot2)
DataToPlot.. <- data.frame(UGB = c("EUG","SPR","COB","VEN"),
            Rate = c( 782, 798,858,902))

ggplot(DataToPlot.. ,y = Rate, x = UGB) + 
    geom_bar(aes(x=UGB,y=Rate, fill = UGB),stat="identity",show.legend =  FALSE) +
    scale_fill_brewer(palette="Set3") +
    geom_abline(aes(intercept = 777, slope = 0), colour = "red", 
                               size = 1.25, linetype="dashed",show.legend = TRUE)   

1 个答案:

答案 0 :(得分:3)

玩了一会儿之后(这并不像我预期的那么容易)我用过这个:

library(ggplot2)

DataToPlot.. <- data.frame(UGB = c("EUG","SPR","COB","VEN"),
                           Rate = c( 782, 798,858,902))

x <- c(0.5,nrow(DataToPlot..)+0.5)
AvgLine.. <- data.frame(UGB=x,Rate=777,avg="777")

ggplot(DataToPlot.. ,y = Rate, x = UGB) + 
  geom_bar(aes(x=UGB,y=Rate, fill = UGB),stat="identity",show.legend=TRUE ) +
  scale_fill_brewer(palette="Set3") +

  geom_line(data=AvgLine..,aes(x=UGB,y=Rate,linetype=avg),
                              colour = "red", size = 1.25) +
  scale_linetype_manual(values=c("777"="dashed")) +

  # make the guide wider and specify the order
  guides(linetype=guide_legend(title="Country Average",order=1,keywidth = 3),
            color=guide_legend(title="UGB",order=2))      

注意我无法强迫geom_abline制作自己的指南。我不得不创建一个数据帧。该线的x坐标基本上是因子值,我调整它们以超出图的边缘。

要得到这个:

enter image description here