折线图是一种用于显示数据随连续变量(如时间、温度或其他定量指标)变化趋势的可视化工具。通过将数据点用线段连接起来,折线图能够直观地反映变量之间的动态关系和变化模式。它适用于分析趋势、对比多个系列数据或识别异常变化。例如,在研究细胞生长的过程中,折线图常用于显示不同时间段内细胞的生长状态等,尤其是在CCK8等具有时间节点的数据统计及可视化过程中。通过清晰的图形表达,折线图为数据解读和决策提供了有力支持。
    使用R语言进行数据可视化几乎可以说是“轻松操作”,但前提是必须将数据整理成符合R语言绘图要求的格式,这是一个至关重要的步骤。与Prism等统计绘图软件类似,R语言的优势在于将图表的各个可选项和设置项通过代码实现,从而提供了更高的灵活性和自定义能力。实际上,许多绘图代码都是公开免费的,用户只需具备一定的R语言基础,将数据准备妥当并导入相应的脚本,就可以快速生成高质量的图表。这种方式不仅高效,还能满足多样化的科研绘图需求。

第一步 加载R包

# 加载R包
library(ggplot2)   # 主流绘图R包
library(dplyr)     #数据处理R包
library(readxl)    #读取excel数据R包

第二步 加载数据

    数据的整理需要根据我们想要展示的研究目标和实际的实验设计进行规划。例如,如果我们需要检测小鼠在接受某种干预方案后的体重变化,我们首先需要区分实验组和对照组,并为每个组设置足够的生物学重复。为什么生物学重复至少需要设置3个?因为只有在“3对3”的情况下进行比较时,才能获得具有统计学意义的P值。
    在实验中,我们可以从第0天开始,每隔一周进行一次测量,例如1周、2周、3周、4周和5周,记录每个时间点的数据即可。
    初步整理的数据通常通过Excel表格处理,这并不会对后续分析造成影响。完成整理后,我们可以将数据另存为CSV格式文件,方便后续导入R语言进行分析。当然,直接从Excel文件中读取数据也是可行的,但个人更推荐使用CSV格式,因为它更加轻量化和高效,避免了不必要的兼容性问题。使用CSV文件可以让数据导入更加稳定和顺畅,有助于简化后续的数据处理和绘图工作。

# 加载数据
## excel数据
data1 <- read_xlsx("Mmu data.xlsx")
## 当然有多个sheet时可以自定义sheet读取
data1 <- read_xlsx("Mmu data.xlsx",sheet = "Sheet1")  # 注意Sheet中S的大写!!!
## csv数据
data1 <- read.csv("Mmu data.csv")
head(data1)
##     Group Order Time Value
## 1 Control     1  D0W 19.69
## 2 Control     2  D0W 20.12
## 3 Control     3  D0W 21.48
## 4    Test     1  D0W 20.68
## 5    Test     2  D0W 21.85
## 6    Test     3  D0W 21.94
##  可以指定行名和列名:
# data2 <- read.csv("Mmu data.csv", header = T,row.names = 1)  
# header = T 代表列名,row.names = 1代表数据的第一列为行名。
# R语言要求数据的行名不能重复出现,需注意!!!

第三步 计算汇总数据

# 计算每个时间点的均值和标准误差
summary_data <- data1 %>%
  group_by(Group, Time) %>%
  summarise(mean_size = mean(Value),
            se = sd(Value)/sqrt(n()))
head(summary_data)
## # A tibble: 6 × 4
## # Groups:   Group [1]
##   Group   Time  mean_size    se
##   <chr>   <chr>     <dbl> <dbl>
## 1 Control D0W        20.4 0.539
## 2 Control D1W        21.5 0.485
## 3 Control D2W        24.1 0.291
## 4 Control D3W        25.3 0.354
## 5 Control D4W        27.0 0.338
## 6 Control D5W        27.9 0.234

第四步 限定顺序

    在R语言中,默认情况下,数据的排序是按照字母或数字的顺序排列的。这种默认排序可能会导致绘制的图表中,分组或类别的显示顺序与我们预期的逻辑顺序不一致,甚至出现前后颠倒的情况。因此,在正式作图之前,我们需要提前定义好数据的显示顺序,以确保图表的直观性和解读的一致性。

    在R中,我们可以通过将数据的某一列转换为因子(factor)并明确设定因子水平的顺序来解决这个问题。例如,使用factor()函数设置因子顺序,或直接通过levels参数定义显示顺序。这种方法能够让图表中的分组按照我们指定的逻辑顺序排列,而不是依赖默认规则。通过这一简单的调整,可以有效避免因排序问题造成的图表混乱,同时提升图表的专业性和清晰度。

# 设置Week的顺序
summary_data$Time <- factor(summary_data$Time, 
                            levels = c("D0W", "D1W", "D2W", "D3W", "D4W","D5W"))

第五步 制图

# 创建折线图
ggplot(summary_data, aes(x = Time, y = mean_size, group = Group, color = Group)) +
  geom_line(size = 0.7) +  # 添加线
  geom_point(size = 3) +  # 添加点
  geom_errorbar(aes(ymin = mean_size - se, ymax = mean_size + se), 
                width = 0.2) +  # 添加误差条
  scale_color_manual(values = c("Control" = "black", "Test" = "red")) +  # 自定义颜色
  labs( x = "Time (weeks)",
    y = "Weight (g)",
    title = "Weight change Over Time") +
  theme_bw() +  # 使用黑白主题
  theme(panel.grid.minor = element_blank(),  # 移除次网格线
        axis.title = element_text(size = 12, face = "bold"),  # 调整轴标题
        axis.text = element_text(size = 10),  # 调整轴文本
        legend.position = "top")  # 将图例放在顶部