Omicsmaster
点击蓝字 关注我们
深度定制 让研究突破预期
之前,为大家分享过如何使用DeepSeek进行相关性热图、火山图、气泡图等特色图表的绘制,非常受欢迎!那么,使用DeepSeek能不能进行线性回归,并绘制下图这般漂亮的组合散点图?
接下来,仍以一份具体的数据为例,看下如何使用DeepSeek+Rstudio进行线性回归并绘制上图这样的组合散点图!
数据的整理比较简单,只需准备1个包含自己感兴趣变量的表格,一个变量对应一列,然后另存为CSV格式,如下图。注意,这里的范例数据不具有现实意义,仅供绘图使用。
首先,打开DeepSeek上传范例数据。将示例数据文件直接复制粘贴到对话框中即可上传文件,当然也可点击“曲别针”上传附件。
尝试输入分析绘图指令:
基于R语言对附件文件的前两列进行线性回归并绘制组合散点图;Glycosylated_hemoglobin列对应纵坐标,Glucose列对应横坐标,Group列对应分组颜色,分组颜色为:#0cbcc0, #ffbc40;使用ggplot2绘制散点图并在图中添加拟合线、R方值、P value值,使用ggExtra包的ggMarginal 函数在主图(散点图)的上方和右侧添加密度曲线图,要求代码步骤分明,避免函数嵌套
DeepSeek经过11秒的深度思考,很快给出了分析绘图代码。注意,我们可以仔细阅读一下DeepSeek的整个思考过程,可检查数据是否导入正确,同时也可以确保DeepSeek正确理解我们的意图。
具体的线性回归分析及绘图代码,如下图,代码块下方为简单的代码说明。
点击以上代码块右上角的“复制”按钮,将DeepSeek生成的R代码复制粘贴到Rstudio的脚本编辑器中运行,如下图,注意在读入本地数据前,将测试数据文件所在文件夹设置为“工作目录”。
逐行运行代码,验证分析代码是否正确,初始得到的绘图效果如下。
当然我们也可尝试将theme_minimal() 替换为theme_bw(),通过调整theme() 函数的panel.grid = element_blank() 参数,隐藏掉网格线,调整后的绘图效果如下:
同样,通过调整ggMarginal() 函数的参数 type = "histogram",也可以绘制添加直方图的效果,如下图,当然你也可以尝试添加箱型图、小提琴图等!
最终得到的结果如下图:
DeepSeek给出的代码如下:
# 1. 加载必要的包
library(ggplot2)
library(ggExtra)
library(dplyr)
library(broom)
# 2. 读取数据
data <- read.csv("testdata.csv")
# 3. 查看数据结构
str(data)
head(data)
# 4. 进行线性回归分析(按分组)
# 创建分组回归模型
day_model <- lm(Glycosylated_hemoglobin ~ Glucose,
data = data[data$Group == "Day", ])
night_model <- lm(Glycosylated_hemoglobin ~ Glucose,
data = data[data$Group == "Night", ])
# 提取模型摘要信息
day_summary <- summary(day_model)
night_summary <- summary(night_model)
# 提取R方和P值
day_r2 <- round(day_summary$r.squared, 3)
day_p <- format.pval(coef(day_summary)[2, 4], digits = 3, eps = 0.001)
night_r2 <- round(night_summary$r.squared, 3)
night_p <- format.pval(coef(night_summary)[2, 4], digits = 3, eps = 0.001)
# 5. 创建散点图
# 定义颜色映射
group_colors <- c("Day" = "#0cbcc0", "Night" = "#ffbc40")
# 创建基础散点图
scatter_plot <- ggplot(data, aes(x = Glucose, y = Glycosylated_hemoglobin,
color = Group, fill = Group)) +
geom_point(alpha = 0.7, size = 2,show.legend =T) +
# 添加分组拟合线
geom_smooth(method = "lm", se = T,alpha = 0.2, size = 1,show.legend =T) +
# 自定义颜色
scale_color_manual(values = group_colors) +
scale_fill_manual(values = group_colors) +
# 添加统计信息文本
annotate("text", x = max(data$Glucose) * 0.15, y = max(data$Glycosylated_hemoglobin) * 0.97,
label = paste("Day: R² =", day_r2, ", p =", day_p),
color = "#0cbcc0", size = 3.5, hjust = 0) +
annotate("text", x = max(data$Glucose) * 0.15, y = max(data$Glycosylated_hemoglobin) * 0.92,
label = paste("Night: R² =", night_r2, ", p =", night_p),
color = "#ffbc40", size = 3.5, hjust = 0) +
# 添加图例和标签
labs(
title = "",
x = "Glucose",
y = "Glycosylated Hemoglobin",
color = "",
fill = "",
) +
# 美化主题
theme_bw() +
theme(axis.title = element_text(size = 12),
legend.position = "none",
panel.grid = element_blank()
)
scatter_plot
# 6. 添加边际密度曲线
final_plot <- ggMarginal(
scatter_plot,
type = "density",
groupColour = TRUE,
groupFill = TRUE,
alpha = 0.5
)
# 7. 显示图形
print(final_plot)
# 添加直方图
final_plot <- ggMarginal(
scatter_plot,
type = "histogram",
groupColour = TRUE,
groupFill = TRUE,
alpha = 0.5
)
print(final_plot)
# 8. 可选:保存图形
ggsave("regression_plot_with_marginal.png", final_plot,
width = 10, height = 8, dpi = 300)
# 9. 输出回归模型摘要
cat("\n=== Day组回归模型摘要 ===\n")
print(summary(day_model))
cat("\n=== Night组回归模型摘要 ===\n")
print(summary(night_model))
好啦,本次的DeepSeek线性回归分析与绘图教程就分享到这里啦!
奥智团队始终坚守 “让每一分科研投入都物超所值” 的核心服务理念,从项目初期需求沟通到实验执行、数据分析,再到最终文章撰写与投稿,全程提供无障碍对接。针对不同领域、不同阶段的科研探索,奥智生物提供完善的定制化组学科研服务体系,涵盖单细胞组学、空间组学、转录组学、微生物组学、蛋白代谢组学等研究方向。欢迎有项目意向的老师联系我们,奥智生物将为您提供深度定制化的解决方案。
长按识别下方二维码咨询:
*未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。
Omicsmaster
让每一分科研投入
都物超所值

