【问题标题】:Dodging vertical lines for median_hilow in ggplot避开ggplot中median_hilow的垂直线
【发布时间】:2019-06-20 17:17:42
【问题描述】:

我需要在多个样本中绘制显示 3 次重复的中值和 IQR 的线。

数据:

sampleid <- rep(1:20, each = 3)
replicate <- rep(1:3, 20)
sample1 <- seq(120,197, length.out =  60)
sample2 <- seq(113, 167, length.out = 60)
sample3 <- seq(90,180, length.out = 60)

到目前为止我做了什么?

df <- as.data.frame(cbind(sampleid,replicate,sample1, sample2, sample3))

library(reshape2) 

long <- melt(df,id.vars = c('sampleid', 'replicate')) 

ggplot(data = long, aes(x = variable, y = value, colour = factor(replicate)))   + stat_summary(fun.data=median_hilow, conf.int=.5)

但是,对于每个样本,我得到的复制品的 IQR 图相互重叠。我想找到一种“躲避”这 3 条线的方法,使它们彼此相邻可见,而无需更改我已实现的绘图的其他参数。这可以实现吗?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    您必须将jitter 介绍给这些行:

    ggplot(data = long, aes(x = variable, y = value, colour = factor(replicate))) +
      stat_summary(fun.data=median_hilow, fun.args = (conf.int=.5), position = "jitter")
    

    请注意,您还需要将conf.int=5 包裹在fun.args 中。

    或者,将您的 x 更改为 factor(replicate) 并添加 facet_wrap

    ggplot(data = long, aes(x = factor(replicate), y = value, colour = factor(replicate))) +
      stat_summary(fun.data=median_hilow, fun.args = (conf.int=.5)) +
      facet_wrap(~variable)
    

    【讨论】:

    • 感谢您的启发;我离我想要的很近。但是关于为什么这些线随机出现在不同样本的处理中的任何逻辑?是否可以让这些行按顺序出现,即处理 1、2 和 3,并且间距也相等?
    • 您正在使用x = variable 进行绘图。这意味着您在sample1sample2sample3 上绘图,并且这些线条都与这些线条很好地对齐。通过添加jitter,您可以将它们区分开来。但是,jitter 添加了一个随机数。
    • 看看编辑,你可能正在寻找类似的东西。
    猜你喜欢
    • 2012-04-04
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 2018-05-06
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多