如何设置中间交叉开关以在因子内对齐?

问题描述

我有一个像这样的数据框:

my_df <- structure(list(SampleID = c("sample01","sample02","sample03","sample04","sample05","sample06","sample07","sample08","sample09","sample10","sample11","sample12","sample13","sample14","sample15","sample16","sample17","sample18","sample19","sample20"),y = c(1.68547922357333,0.717650914301956,1.18156420566867,1.31643130248052,1.2021341615705,0.946937741954258,1.75576099871947,0.952670480793451,2.00921185693852,0.968642950473789,1.65243482711174,2.14332269635055,0.30556964944383,0.860605616591314,0.933339331803171,1.31797519903504,0.857873539291964,-0.328227710452388,-0.22023346428776,1.6600566728651),week = structure(c(1L,2L,3L,1L,3L),.Label = c("0","3","6"),class = "factor"),grumpy = structure(c(2L,1L),.Label = c("No","Yes"),week_grumpy = structure(c(2L,4L,6L,5L,5L),.Label = c("0 No","0 Yes","3 No","3 Yes","6 No","6 Yes"),class = "factor")),class = c("spec_tbl_df","tbl_df","tbl","data.frame"),row.names = c(NA,-20L))

#packages needed if you don't have
install.packages("ggbeeswarm")
install.packages("ggplot2")

这通常是我绘制图形的方式:

library(ggplot2)
library(ggbeeswarm)

ggplot(data = my_df,aes(x=week,y=y,color=grumpy)) +
    geom_quasirandom(dodge.width = 0.75)

Typical plot

这很好,因为它可以很好地分离颜色。如今,我想添加一个中值交叉开关以进一步显示组之间的差异。像这样:

ggplot(data = my_df,color=grumpy)) +
    geom_quasirandom(dodge.width = 0.75) +
    stat_summary(aes(group = grumpy),fun = median,fun.min = median,fun.max = median,geom = "crossbar",color = "black",width = 0.7,lwd = 0.2)

typical plot with median lines

现在,我想拥有的是与X轴上每个因子内的颜色对齐的中间横线。有没有办法在R中做到这一点?还是我被降级为手动编辑交叉开关以对齐?

这是我尝试过的一件事:

ggplot(data = my_df,aes(x=week_grumpy,color=grumpy)) +
    geom_jitter(width = 0.1) +
    stat_summary(aes(group = grumpy),lwd = 0.2)

median bars lined up but x-axis messy

但是现在x轴不是我想要的方式了(但是,比以前的示例更容易在Inkscape之类的文件中进行手动编辑)。

我已经找到了一些提示herehere,但尚未找到令人满意的解决方案。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)