如何制作带有点和标签的箱线图?

how to make the boxplots with dot points and labels?

我有如下数据框

    G1  G2      G3          G4      group
S_1 0   269.067 0.0817233   243.22  N
S_2 0   244.785 0.0451406   182.981 N
S_3 0   343.667 0.0311259   351.329 N
S_4 0   436.447 0.0514887   371.236 N
S_5 0   324.709 0   293.31  N
S_6 0   340.246 0.0951976   393.162 N
S_7 0   382.889 0.0440337   335.208 N
S_8 0   368.021 0.0192622   326.387 N
S_9 0   267.539 0.077784    225.289 T
S_10    0   245.879 0.368655    232.701 T
S_11    0   17.764  0   266.495 T
S_12    0   326.096 0.0455578   245.6   T
S_13    0   271.402 0.0368059   229.931 T
S_14    0   267.377 0   248.764 T
S_15    0   210.895 0.0616382   257.417 T
S_16    0.0401525   183.518 0.0931699   245.762 T
S_17    0   221.535 0.219924    203.275 T

现在我想用列中的所有 4 个基因制作一个多箱线图。前 8 行是正常样本,其余 9 行是肿瘤样本,所以对于每个基因,我应该能够制作 2 个带有组织标签的箱线图。我可以制作单独的箱线图,但我应该如何将所有 4 个基因放在一个图中,并为每个箱线图标记组织并使用带状图点。有简单的方法吗?我只能使用行名和列名制作单独的图,但不能根据图中的列组标记标签,也不能用带状图绘制点。任何帮助将不胜感激。谢谢

不确定带状图点是什么意思,我假设您想可视化覆盖在箱线图上的实际点。以下是否足够?

library(ggplot2)
library(dplyr)
library(reshape2)

melt(df) %>% 
 ggplot(aes(x = variable, y = value, col = group)) + 
 geom_boxplot() + 
 geom_jitter()

其中df就是上面的数据框。结果:

与 facet_wrap:

head(df)

    G1      G2        G3      G4 group
S_1  0 269.067 0.0817233 243.220     N
S_2  0 244.785 0.0451406 182.981     N
S_3  0 343.667 0.0311259 351.329     N
S_4  0 436.447 0.0514887 371.236     N
S_5  0 324.709 0.0000000 293.310     N
S_6  0 340.246 0.0951976 393.162     N

library(reshape2)
df <- melt(df)

library(ggplot2)
ggplot(df, aes(x = variable,y = value, group=group, col=group)) +      
facet_wrap(~variable, scales = 'free') + geom_boxplot()