Nature文章中所用的“多项式拟合曲线图”教程

文摘   2024-12-10 18:30   云南  

一边学习,一边总结,一边分享!

由于微信改版,一直有同学反映。存在长时间接收不到公众号的推文。那么请跟随以下步骤,将小杜的生信筆記设置为星标,不错过每一条推文教程。

欢迎关注《小杜的生信笔记》!!

如何加入社群

小杜的生信笔记仅有微信社群

1. 微信群:付费社群。添加小杜好友,加友请知:加友须知!!,加入社群请查看小杜的生信笔记付费加友入群声明

入群声明

2. 小杜个人微信:若你有好的教程或想法,可添加小杜个人微信。值得注意的是,小杜个人微信并不支持免费咨询长时间咨询,但支持小问题2-3个免费咨询。

小杜微信:

知识星球:

本期教程图形

原文图形

前言

本次,我们基于发表在nature期刊中的数据,进行多项式拟合曲线的绘制教程。我们只是使用此图形的一部分数据,及仅作为练习数据,不具有任何意义。


关于拟合曲线图

拟合曲线散点图(通常是将拟合曲线叠加在散点图上),主要是展示数据的整体趋势,帮助评估拟合效果,揭示变量间的关系,评估模型的选择

数据的整体趋势

拟合曲线则可以帮助我们总结数据的趋势,显示数据背后的潜在关系。例如,线性拟合曲线表示变量之间的线性关系,二次或三次多项式拟合曲线表示更复杂的非线性关系。

帮助评估拟合效果

将拟合曲线叠加在散点图上,可以直观地看出拟合模型(如线性拟合、多项式拟合)对数据的拟合效果。

揭示变量间的关系

线性关系:如果拟合曲线是直线,说明变量之间存在线性关系,常见于简单的物理或经济模型中。

非线性关系:如果拟合曲线是曲线(如二次曲线或指数曲线),则说明自变量与因变量之间的关系更为复杂,可能是某种形式的非线性关系。

数据拟合,可以是一次拟合、也可使多项式拟合

一次拟合曲线(线性拟合)

代表的意义:一次拟合曲线表示数据之间具有线性关系,即数据点的变化可以通过一个常数斜率的直线来描述。数学形式为

使用场景

  1. 当数据在可视化上呈现出接近直线的趋势时,线性拟合是适用的。
  2. 用于描述变量之间的简单线性关系,如温度与时间、浓度与反应速率等。

多项式拟合曲线(如二次拟合、三次拟合等)

代表的意义:多项式拟合曲线用于描述数据之间的非线性关系。通过引入高次项,多项式拟合可以更灵活地拟合曲线,适应曲线的弯曲和变化。一般形式为:

使用场景

  1. 当数据在可视化上呈现出明显的曲线关系,且无法用简单的直线表示时,使用多项式拟合可以更准确地捕捉数据的变化趋势。
  2. 适用于描述物理、经济、生态等领域中的复杂非线性现象,如物理反应中的饱和效应或人口增长的加速阶段。

Code

  1. 导入所需的R包
library(ggplot2)
#install.packages("minpack.lm")
library(minpack.lm)
  1. 导入数据
data <- read.csv("inputdata.csv", header = T)
  1. 数据装换
# 数据转换为log10
data$logRSL3 <- log10(data$RSL3)

head(data)
  1. 一次拟合曲线(线性拟合)
fit_vector <- lm(Vector ~ logRSL3, data = data)
fit_dhcr7 <- lm(DHCR7_FLAG ~ logRSL3, data = data)

注意:我们这里仅提供对应的方法,后续不基于此结果。

  1. 多项式拟合曲线
fit_vector <- lm(Vector ~ poly(logRSL3,3), data = data)
fit_dhcr7 <- lm(DHCR7_FLAG ~ poly(logRSL3,3), data = data)
  1. 提取数据
data$Vector_fit <- predict(fit_vector)
data$DHCR7_fit <- predict(fit_dhcr7)
  1. 绘图
ggplot(data, aes(x = logRSL3)) +
# 添加散点
geom_point(aes(y = Vector, color = "Vector"), size = 3) +
geom_point(aes(y = DHCR7_FLAG, color = "DHCR7-Flag"), size = 3) +
# 添加拟合曲线
geom_smooth(aes(y = DHCR7_fit, color = "DHCR7-Flag"),
se = FALSE,method="loess", span=0.9)+
geom_smooth(aes(y = Vector_fit, color = "Vector"),
se = FALSE,method="loess", span=0.9)+
# 图形设置
scale_color_manual(values = c("Vector" = "black", "DHCR7-Flag" = "red")) +
labs(
x = "log10 ([RSL3], μM)",
y = "Cell viability (%)",
color = NULL,
) +
# theme_classic() +
# theme(
# text = element_text(size = 14),
# legend.position = "right"
# )+
theme(panel.background = element_rect(fill = NA),
axis.ticks.y = element_blank(),
axis.ticks.x = element_line(colour = "grey40",size = 0.5),
axis.line = element_line(colour = "grey40",size = 0.5),
axis.text.x = element_text(size = 10),
axis.title.x = element_text(size = 12),
panel.grid.major.y = element_line(colour = NA,size = 0.5),
panel.grid.major.x = element_blank())

关于数据和代码:我们的数据和代码已上传到社群,以及《R语言绘图专栏》中。

关于《R语言绘图专栏》,此专栏基于R语言绘制图形。每个图形我们会提供对应的R代码数据文本文档。此系列将会是一个长期更新的系列。

R版本信息

> sessionInfo()

R version 4.4.0 (2024-04-24 ucrt)
Platform: x86_64-w64-mingw32/x64
Running under: Windows 11 x64 (build 22631)

Matrix products: default


locale:
[1] LC_COLLATE=Chinese (Simplified)_China.utf8 LC_CTYPE=Chinese (Simplified)_China.utf8
[3] LC_MONETARY=Chinese (Simplified)_China.utf8 LC_NUMERIC=C
[5] LC_TIME=Chinese (Simplified)_China.utf8

time zone: Asia/Shanghai
tzcode source: internal

attached base packages:
[1] stats graphics grDevices utils datasets methods base

other attached packages:
[1] minpack.lm_1.2-4 ggplot2_3.5.1

loaded via a namespace (and not attached):
[1] crayon_1.5.3 vctrs_0.6.5 nlme_3.1-166 cli_3.6.3
[5] knitr_1.48 rlang_1.1.4 xfun_0.47 generics_0.1.3
[9] labeling_0.4.3 glue_1.6.2 colorspace_2.1-1 htmltools_0.5.8.1
[13] scales_1.3.0 fansi_1.0.6 rmarkdown_2.28 grid_4.4.0
[17] evaluate_0.24.0 munsell_0.5.1 tibble_3.2.1 fastmap_1.2.0
[21] yaml_2.3.10 lifecycle_1.0.4 compiler_4.4.0 dplyr_1.1.4
[25] pkgconfig_2.0.3 mgcv_1.9-1 rstudioapi_0.16.0 farver_2.1.2
[29] lattice_0.22-6 digest_0.6.37 R6_2.5.1 tidyselect_1.2.1
[33] utf8_1.2.4 splines_4.4.0 pillar_1.9.0 magrittr_2.0.3
[37] Matrix_1.7-0 withr_3.0.1 tools_4.4.0 gtable_0.3.5

若我们的教程对你有所帮助,请点赞+收藏+转发,大家的支持是我们更新的动力!!

往期部分文章

1. 最全WGCNA教程(替换数据即可出全部结果与图形)

推荐大家购买最新的教程,若是已经购买以前WGNCA教程的同学,可以在对应教程留言,即可获得最新的教程。(注:此教程也仅基于自己理解,不仅局限于此,难免有不恰当地方,请结合自己需求,进行改动。)


2. 精美图形绘制教程

3. 转录组分析教程

4. 转录组下游分析

小杜的生信筆記 ,主要发表或收录生物信息学教程,以及基于R分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!

小杜的生信筆記
小杜的生信筆記,生信小白,初来乍到请多指教。 主要学习分享,转录组数据分析,基于R语言数据分析和绘制图片等,以及相关文献的分享。
 最新文章