美文网首页小教程收藏ggsurb
ggplot2: 用这种方式添加的参考线,你见过么?

ggplot2: 用这种方式添加的参考线,你见过么?

作者: 生信云笔记 | 来源:发表于2020-12-13 12:42 被阅读0次

    前言

      ggplot2做为R语言中画图的包,我想大家应该都不陌生,这个包可以解决大部分的画图需求。说到绘图,有时候为了方便了解数据的分布,我们需要在图上添加垂直参考线以示区分。可能大家会觉得用ggplot2添加垂直参考线不是很容易的么,只需要用geom_vline函数就可以了。没错,用这个函数确实可以很省事的添加参考线,但是这个参考线会很长。那么,如果想添加的参考刚好跟概率密度曲线和x轴相交却不出头,那不是看起来更完美么?下面我们就来说说这个是怎么回事。
      先来看一下我们到底要干什么吧,不然,可能说了半天都不知道我们要做什么,看一眼下面这两张图,同样都添加了参考线,左边是用geom_vline函数添加的参考线,风格比较常规;右边是用我的方式添加的参考线,上下刚好与概率密度和x轴相交并不出头。
      对于这两种参考线,你更喜欢哪一种添加参考线的风格呢?如果你喜欢我的方式那就继续放下看。

    示例代码

    library(ggplot2)
    
    df <- ata.frame(rnorm(1000,0,1))
    p <- ggplot(df,aes(x=x))+geom_density(fill='red',alpha=0.2)
    pdata <- ggplot_build(p)$data[[1]]
    idx <- match(min(abs(pdata$x-(-1.5))),abs(pdata$x-(-1.5)))
    yvalue <- pdata[idx,'y']
    p+geom_segment(aes(x = -1.5, y = 0, xend = -1.5, yend = yvalue),color="red",size=0.35,linetype="dashed")
    

    效果如下:

      上面的代码在x=-1.5(此处x的值只是约等于-1.5,原因大家想一下就应该明白了,就不再缀诉了)处添加了一个垂直参考线,而这个参考线可以恰到好处地与概率曲线和x轴相交。这种方式的思路大家看完代码也许应该就已已经知道了。我们这里采用方式是先用ggplot做统计,接着用统计后的数据获得参考线的坐标,最后根据坐标在图中添加适宜的参考线。

    最后

      对于这个小小的需求,不知道大家有咩有更方便的实现方法呢?如果有的话,大家可以分享给我一下。

    相关文章

      网友评论

        本文标题:ggplot2: 用这种方式添加的参考线,你见过么?

        本文链接:https://www.haomeiwen.com/subject/goiugktx.html