热线电话:13121318867

登录
2018-10-17 阅读量: 1396
给图形添加辅助线?ggplot2来解决

横轴为分类变量、纵轴为连续变量的数据图表:

   dat <- read.table(header=TRUE, text='

         cond result

      control     10

    treatment   11.5

    ')
library(ggplot2)

绘制横跨整坐标系的直线:

因为y轴是连续的,所以在这里使用geom_hline, 在x轴是连续的情况下也可以使用geom_vline) 。

# 基本的条形图

    bp <- ggplot(dat, aes(x=cond, y=result)) +

        geom_bar(position=position_dodge(), stat="identity")

    bp

    # line 加入一个水平线


    bp + geom_hline(aes(yintercept=12))

    # 让线变成红色的虚线

    bp + geom_hline(aes(yintercept=12), colour="#990000", linetype="dashed")

为不同分类变量绘制独立的辅助线:

为了给每个条形图绘制不同的辅助线,我们需要用到geom_errorbar命令。我们的辅助线实际上是一个没有高度的误差带,我们需要指定一系列y值来使它成为一条辅助线

    dat$hline <- c(9,12)

    dat

    #>        cond result hline

    #> 1   control   10.0     9

    #> 2 treatment   11.5    12



    # 需要重新设置bp,因为数据已经发生改变

    bp <- ggplot(dat, aes(x=cond, y=result)) +

        geom_bar(position=position_dodge(), stat="identity")

# 为每个条形图绘制单独的线

    bp + geom_errorbar(aes(y=hline, ymax=hline, ymin=hline), colour="#AA0000")



    # 让线短一点

    bp + geom_errorbar(width=0.5, aes(y=hline, ymax=hline, ymin=hline), colour="#AA0000")





    # 即使我们从另一个数据框中获得hline的值,依然可以获得相同的结果

    # 用hline重新定义数据框

    dat_hlines <- data.frame(cond=c("control","treatment"), hline=c(9,12))

    dat_hlines

    #>        cond hline

    #> 1   control     9

    #> 2 treatment    12



    # 根据dat绘制条形图,根据dat_hlines绘制线

    bp + geom_errorbar(data=dat_hlines, aes(y=hline, ymax=hline, ymin=hline),

    dat$hline <- c(9,12)

    dat

    #>        cond result hline

    #> 1   control   10.0     9

    #> 2 treatment   11.5    12



    # 需要重新设置bp,因为数据已经发生改变

    bp <- ggplot(dat, aes(x=cond, y=result)) +

        geom_bar(position=position_dodge(), stat="identity")



    # 为每个条形图绘制单独的线

    bp + geom_errorbar(aes(y=hline, ymax=hline, ymin=hline), colour="#AA0000")

    # 让线短一点

    bp + geom_errorbar(width=0.5, aes(y=hline, ymax=hline, ymin=hline), colour="#AA0000")


    # 即使我们从另一个数据框中获得hline的值,依然可以获得相同的结果

    # 用hline重新定义数据框

    dat_hlines <- data.frame(cond=c("control","treatment"), hline=c(9,12))

    dat_hlines

    #>        cond hline

    #> 1   control     9

    #> 2 treatment    12

    # 根据dat绘制条形图,根据dat_hlines绘制线

    bp + geom_errorbar(data=dat_hlines, aes(y=hline, ymax=hline, ymin=hline), colour="#AA0000")

83.1116
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子