这图怎么画| 箱线图+散点+中位数连线

f9e7fdcb429ba678d8d0da499f44c361.jpeg

boxlpotwithline

写在前面

【这图怎么画】系列的图都来自VIP群里同学的提问。推文只是对图片的复现,不代表作者对图片展现形式的认同。欢迎同学们在群里分析有意思的图片。

本期图片

8cf6d63e45798d456e6d5dda2b50597e.png

「Title:」A distinct clade of Bifidobacterium longum in the gut of Bangladeshi children thrives during weaning

「Journal:」Cell

「DOI」:10.1016/j.cell.2022.10.011outside_default.png

Box shows interquartile range, whiskers show data range, and the horizontal line in the box shows the median. Dashed lines show longitudinal trends connecting medians across time points.

箱线图,虚线为中位数连线。

复线结果

9ac44a798993d8633fa21f345cd5b434.png

示例数据和代码领取

木舟笔记永久VIP企划

「权益:」

  1. 「木舟笔记所有推文示例数据及代码(「在VIP群里」实时更新」)。

    889fff137cf7f7930360c712212fad0b.png
    data+code
  2. 木舟笔记「科研交流群」

「收费:」

「169¥/人」。可添加微信:mzbj0002 转账(或扫描下方二维码),或直接在文末打赏。木舟笔记「2022VIP」可直接支付「70¥」升级。

点赞在看 本文,分享至朋友圈集赞30个保留30分钟,可优惠20¥

b60c86af38feb7d4242b87c22a0afd11.png

绘图

# data prepare
data <- data.frame(runif(30,0,1),
                    runif(30,0.8,1),
                    runif(30,0.8,1),
                    runif(30,0.25,0.85),
                    runif(30,0,0.7),
                    runif(30,0,0.5),
                    runif(30,0,0.1))
row.names(data)<- paste0('sample',1:30)
colnames(data) <- paste0('time',1:7)
data$sample = row.names(data)

head(data)
# wide to long
library(tidyr)
dt_plot <- gather(data, time, value,-sample)
head(dt_plot)
# calculate grouped medians
median =  data.frame(time =  paste0('time',1:7) ,
                     median = tapply(dt_plot$value, dt_plot$time, median) )
head(median)
## plot
library(ggplot2)
library(ggbeeswarm)
ggplot(dt_plot,aes(time,value))+
  geom_boxplot()+
  geom_beeswarm(shape = 21,color = '#9ca7ce',fill = '#9ca7ce',
                size = 3.5,cex = 1.5,
                stroke = 0.6,alpha = 0.8)+
  geom_line(data = median,
            mapping = aes(x = time, y = median, group=1),
            color="black",linetype = 'longdash',size = 2)+
  theme_bw()+
  labs(x = "", y = "")+
  ggtitle("My Plot Title")+
  theme(axis.text.x = element_text(color="black",size=14),
        axis.text.y=element_text(color="black",size=14),
        plot.title = element_text(size = 14, face = "bold", color = "black"),
        panel.border = element_rect(fill=NA,color="black", size=1, linetype="solid"))

ggsave('boxlpotwithline.pdf',width = 5,height = 5)
83c2863558251ce688296a254113d88c.png
boxplot+line

往期内容

  1. 资源汇总 | 2022 木舟笔记原创推文合集(附数据及代码领取方式)

  2. CNS图表复现|生信分析|R绘图 资源分享&讨论群!

  3. R绘图 | 浅谈散点图及其变体的作图逻辑

  4. 这图怎么画| 有点复杂的散点图

  5. 这图怎么画 | 相关分析棒棒糖图

  6. 组学生信| Front Immunol |基于血清蛋白质组早期诊断标志筛选的简单套路

  7. (免费教程+代码领取)|跟着Cell学作图系列合集

  8. Q&A | 如何在论文中画出漂亮的插图?

  9. 跟着 Cell 学作图 | 桑葚图(ggalluvial)

  10. R实战 | Lasso回归模型建立及变量筛选

  11. 跟着 NC 学作图 | 互作网络图进阶(蛋白+富集通路)(Cytoscape)

  12. R实战 | 给聚类加个圈圈(ggunchull)

  13. R实战 | NGS数据时间序列分析(maSigPro)

  14. 跟着 Cell 学作图 | 韦恩图(ggVennDiagram)


8cc8e285cc67be82fb5bc7324061484f.png
木舟笔记矩阵
可以使用ggplot2包中的geom_boxplot()、geom_segment()、geom_jitter()函数实现配对箱线图+连线+散点抖动的绘制。 以下是一个示例代码: ```R library(ggplot2) # 创建一个示例数据框 df <- data.frame( adscore = c(2, 4, 3, 6, 5), dongtairadscore = c(3, 5, 4, 7, 6) ) # 绘制配对箱线图+连线+散点抖动 ggplot(df, aes(x = 1:2, y = c(adscore, dongtairadscore))) + geom_boxplot(aes(fill = factor(x))) + geom_segment(aes(x = 1, xend = 2, y = adscore, yend = dongtairadscore)) + geom_jitter(aes(color = factor(x)), width = 0.1) ``` 解释一下代码: 首先,我们创建了一个示例数据框df,其中包含了两列数据adscore和dongtairadscore。 接着,我们使用ggplot()函数创建了一个ggplot对象,并指定了x轴和y轴的变量。这里的x轴变量使用了一个序列1:2,而y轴变量则是将adscore和dongtairadscore两列数据拼接在一起。 然后,我们使用geom_boxplot()函数绘制了配对箱线图。注意,我们在aes()函数中使用了一个新的变量x,这是为了将两列数据配对在一起,并在箱线图中进行区分。 接着,我们使用geom_segment()函数绘制了连线。这里需要设置x、xend、y和yend参数,分别指定线段的起始和终止位置。 最后,我们使用geom_jitter()函数绘制了散点抖动。同样需要使用color参数将两列数据区分开来。 运行代码后,你应该可以看到一张配对箱线图+连线+散点抖动的图表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值