当前位置:首页 > 技术知识 > 正文内容

R语言折线图+散点图可视化数据时间动态

图1 颗粒物的C:P和N:P比对供应比中的氮磷比(N:P)较为敏感,而 C:N 比则相对稳定( Seelen EA , et al. (2025). Nitrogen and phosphorus differentially control marine biomass production and stoichiometry . Nature Communications, 16, 5713 .
# 加载必要的包library(ggplot2)library(vegan)library(cowplot)library(dplyr)
# --------------------------# (1) 模拟数据生成(控制变异性)# --------------------------
# 1.1 折线图数据(减小随机波动范围)set.seed(123)n_replicates <- 3 # 每个组合的重复数df_line <- expand.grid( Day = c(0, 5, 10, 15, 25, 30), Treatment = LETTERS[1:5], Replicate = 1:n_replicates)
# 为每个处理-时间点生成更集中的数据(减小标准差)for (i in 1:nrow(df_line)) { day <- df_line$Day[i] treatment <- df_line$Treatment[i] base_value <- 15 + day * 0.2 # 基础值随天数轻微增加 df_line$Part.C[i] <- rnorm(1, mean = base_value, sd = 1.5) # 标准差从3减小到1.5}
# 计算均值和标准差df_summary <- df_line %>% group_by(Day, Treatment) %>% summarise( Mean = mean(Part.C), SD = sd(Part.C), .groups = "drop" )
# 1.2 PCoA 数据(保持不变)set.seed(456)n_samples <- 30n_otus <- 10otu_table <- matrix(rpois(n_samples * n_otus, lambda = 10), nrow = n_samples, ncol = n_otus)rownames(otu_table) <- paste0("Sample", 1:n_samples)metadata <- data.frame( Sample = rownames(otu_table), Treatment = rep(LETTERS[1:5], each = 6), Day = rep(c(0, 5, 10, 15, 25, 30), times = 5))
# --------------------------# (2) 绘制折线图(误差棒缩小)# --------------------------p_line <- ggplot(df_summary, aes(x = Day, y = Mean, color = Treatment, group = Treatment)) + geom_line(linewidth = 1) + geom_point(size = 4,shape=18) + geom_errorbar( aes(ymin = Mean - SD, ymax = Mean + SD), width = 0, linewidth = 0.8 ) + scale_color_manual(values = c("#FFC95E", "#FC7E86", "#507564", "#73C5DC", "#000000")) + labs( x = "Day", y = "Concentration (Part.C)", title = "" ) + theme_bw()+theme(panel.grid.major=element_blank(),panel.grid.minor=element_blank())+ theme(axis.text=element_text(colour='black',size=9))+ theme( legend.position = "NA", plot.title = element_text(face = "bold", hjust = 0) )
# --------------------------# (3) PCoA 分析及绘图(图B,保持不变)# --------------------------dist_matrix <- vegdist(otu_table, method = "bray")pcoa_result <- cmdscale(dist_matrix, k = 2, eig = TRUE)pcoa_scores <- as.data.frame(pcoa_result$points)colnames(pcoa_scores) <- c("PCo1", "PCo2")pcoa_scores$Treatment <- metadata$Treatmentpcoa_scores$Day <- metadata$Dayvariance <- round(pcoa_result$eig / sum(pcoa_result$eig) * 100, 1)
p_pcoa <- ggplot(pcoa_scores, aes(x = PCo1, y = PCo2, color = Treatment, shape = factor(Day))) + geom_point(size = 4, shape=24, alpha = 1) + scale_color_manual(values = c("#FFC95E", "#FC7E86", "#507564", "#73C5DC", "#000000")) + scale_shape_manual(values = c(16, 17, 15, 18, 8, 3)) + labs( x = paste0("PCo1 (", variance[1], "%)"), y = paste0("PCo2 (", variance[2], "%)"), title = "", shape = "Day" ) + theme_bw()+theme(panel.grid.major=element_blank(),panel.grid.minor=element_blank())+ theme(axis.text=element_text(colour='black',size=9))+ theme( legend.position = "right", plot.title = element_text(face = "bold", hjust = 0) )
# --------------------------# (4) 组合图形# --------------------------library(cowplot)cowplot::plot_grid(p_line, p_pcoa ,ncol= 2, rel_widths = c(1, 1.4))

相关文章

苹果编程Objective C与Swift谁更牛?

小鹏大学刚刚毕业,软件开发方面的东西学的不是很多,听好多同学说做iOS开发工资上万是很容易的,踌躇满志,一直想自学iOS开发,可突如其来的一件事让他瞬间迷茫了。时间:2014年9月10日10点地点:某...

[三菱PLC] 用&quot;C语言&quot;玩转PLC,三菱PLC使用ST语言超详细教程

ST语言,全称为结构化文本(Structured Text),是一种高级编程语言,专为工业自动化和控制系统设计。我们学习PLC一般是用梯形图,梯形图学会后,学习SFC,但是我发现梯形图和SFC虽然简单...

真来了,iOS 16.6 beta 利用,隐藏 Dock 栏

昨天提到!iOS 16.5 kfd 漏洞可以隐藏 Dock 栏消息,现在已经确定 iOS 16.6 beta 内测也是支持使用 kfd 漏洞,当然!也是支持隐藏 Dock 栏,主要验证该系统是否可用。...

有了这份900多页的Android面试指南,你离大厂Offer还远吗?

前言对于大部分程序员来说,一线互联网是的工作经历是毕生的追求,实际上大厂对于学历的要求远远没有我们想象的那么高,近几年来,互联网公司更注重技术,所以提升自身技术水平才是斩获offer的制胜关键。一线互...

Django 官方推荐的姿势:类视图(django类视图和函数视图哪个好)

作者:HelloGitHub-追梦人物在开发网站的过程中,有一些视图函数虽然处理的对象不同,但是其大致的代码逻辑是一样的。比如一个博客和一个论坛,通常其首页都是展示一系列的文章列表或者帖子列表。对处理...

Linux系统编程—互斥量mutex(linux 互斥量)

##互斥量mutex前文提到,系统中如果存在资源共享,线程间存在竞争,并且没有合理的同步机制的话,会出现数据混乱的现象。为了实现同步机制,Linux中提供了多种方式,其中一种方式为互斥锁mutex(也...