我有一个Excel表,其中有两列数据AIP1和AIP2,要求画出这两列数据的小提琴图,小提琴图里内嵌箱式图,用两个颜色显示,并且有四周框线和X轴Y轴的刻度线,并在图正上方添加文本“大小”,R代码表示
时间: 2024-10-28 15:15:35 浏览: 16
在R语言中,你可以使用`ggplot2`包以及其拓展包`vioplot`来创建带内嵌箱线图的小提琴图。以下是完成这个任务的一段示例R代码:
```r
# 首先需要安装并加载必要的库
if (!require("ggplot2")) install.packages("ggplot2")
if (!require("vioplot")) install.packages("vioplot")
# 假设你的Excel数据已经导入为data.frame形式,比如df
# df <- read_excel("your_file.xlsx") # 替换为实际文件路径
# 将AIP1和AIP2列作为因子处理,便于区分颜色
df$group <- factor(c(rep("AIP1", nrow(df)/2), rep("AIP2", nrow(df)/2)))
# 创建小提琴图及内嵌箱线图
p <- ggplot(data = df, aes(x = group, y = value)) +
geom_violin(fill = c("#69b3a2", "#e75d44"), alpha = 0.8, color = "black", size = 1) +
geom_boxplot(width = 0.2, fill = c("#69b3a2", "#e75d44"), color = "black") +
theme_bw() + # 使用黑白色调
labs(title = "大小", x = "", y = "") +
scale_y_continuous(breaks = pretty_breaks(), limits = c(0, max(df$value))) +
coord_cartesian(xlim = c(-0.5, 1.5), expand = FALSE) + # 控制网格线和X轴范围
theme(
axis.line.y.left = element_line(colour = "black", size = 1),
axis.line.y.right = element_blank(),
axis.text.x = element_text(angle = 90, hjust = 1)
) +
geom_text(aes(label = "大小", y = Inf, hjust = -0.2), size = 5, vjust = -1)
# 显示图形
print(p)
```
请将上述代码中的`"your_file.xlsx"`替换为你的Excel文件的实际路径。这段代码会生成一个小提琴图,AIP1和AIP2的数据分别用两种颜色显示,并包含箱线图,同时满足四周框线、X轴Y轴刻度线的需求。注意,你需要根据实际情况调整标题、颜色、字体等细节。
阅读全文