ggplot2箱线图 样本量箱宽

此博客展示了如何使用ggplot2创建箱线图,通过`varwidth=TRUE`特性调整每个组别的宽度,以反映不同组的观测数量。作者使用了数据框和自定义x轴标签,提供了详细的代码示例和数据预处理步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://www.r-graph-gallery.com/266-ggplot2-boxplot-with-variable-width.html

varwidth = TRUE

# library
library(ggplot2)
 
# create data
names <- c(rep("A", 20) , rep("B", 5) , rep("C", 30), rep("D", 100))
value <- c( sample(2:5, 20 , replace=T) , sample(4:10, 5 , replace=T), sample(1:7, 30 , replace=T), sample(3:8, 100 , replace=T) )
data <- data.frame(names,value)
 
# prepare a special xlab with the number of obs for each group
my_xlab <- paste(levels(data$names),"\n(N=",table(data$names),")",sep="")
 
# plot
ggplot(data, aes(x=names, y=value, fill=names)) +
    geom_boxplot(varwidth = TRUE, alpha=0.2) +
    theme(legend.position="none") +
    scale_x_discrete(labels=my_xlab)

在这里插入图片描述

### 使用ggplot2绘制多组高低表达量箱线图 为了实现这一目标,`ggplot2`包提供了强大的绘图功能。下面是一个具体的例子来说明如何创建一个多组高低表达量的箱线图。 #### 数据准备 假设有一个数据框包含了不同样品(如Bulk Soil, Rhizosphere等)以及它们对应的基因表达水平: ```r library(ggplot2) # 创建示例数据集 data <- data.frame( SampleType = rep(c("Bulk Soil", "Rhizosphere", "Rhizoplane", "Endosphere"), each=50), ExpressionLevel = c(rnorm(50, mean=1), rnorm(50, mean=2), rnorm(50, mean=3), rnorm(50, mean=4)) ) ``` 这段代码构建了一个名为 `data` 的数据帧,其中包含两个变量:`SampleType` 和 `ExpressionLevel`。这里使用正态分布随机数模拟了四种不同类型样本下的基因表达情况[^4]。 #### 绘制箱线图 接下来利用 `ggplot2::geom_boxplot()` 函数绘制箱形图,并通过设置不同的颜色区分各个样本类别: ```r p <- ggplot(data, aes(x=SampleType, y=ExpressionLevel)) + geom_boxplot(aes(fill=SampleType)) + # 设置填充色基于样本类型 labs(title="Gene Expression Levels Across Different Samples", subtitle="Boxplots showing the distribution of expression levels across sample types.", caption="Data simulated for demonstration purposes.") + theme_minimal() print(p) ``` 上述命令将会生成一张图表,在该图表中每种样本类型的表达水平被分别用一个独立的箱子表示出来,同时设置了标题、副标题和底部注释以增加可读性和解释力[^2]。 此外还可以进一步调整图形样式,比如改变调色板或者添加均值点等细节增强可视化效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值