写在前面
【这图怎么画】系列的图都来自VIP群
里同学的提问。推文只是对图片的复现,不代表作者对图片展现形式的认同。欢迎同学们在群里分析有意思的图片。
本期图片
❝「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.011
❞
❝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.
箱线图,虚线为中位数连线。
❞
复线结果
示例数据和代码领取
木舟笔记永久VIP企划
「权益:」
「木舟笔记所有推文示例数据及代码(「在VIP群里」实时更新」)。
data+code 木舟笔记「科研交流群」。
「收费:」
「169¥/人」。可添加微信:mzbj0002
转账(或扫描下方二维码),或直接在文末打赏。木舟笔记「2022VIP」可直接支付「70¥」升级。
❝❞
点赞
、在看
本文,分享至朋友圈集赞30个
并保留30分钟
,可优惠20¥
。
绘图
# 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)