You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R GGplot循环生成学生成绩图时X轴同时展示编号与日期的问题

问题解决方法

错误原因

你之前直接传入全局数据集的date字段作为X轴标签,所有学生的图表都会复用全局数据前4行(即首个学生)的日期,没有针对单个学生的独立数据生成对应标签。

实现代码

你只需要在每次循环生成图表时,基于当前学生的子数据集拼接测试编号和日期作为自定义标签,传入X轴的scale参数即可,修改后代码如下:

plot_list = list()
for (var in unique(all_students$students)) {
  # 提取当前学生的所有成绩数据
  student_df <- all_students[all_students$students == var, ]
  # 拼接X轴刻度标签:测试编号+换行+日期,也可替换\n为空格/斜杠改为单行显示
  x_tick_labels <- paste0(student_df$test_number, "\n", student_df$date)
  
  p = ggplot(student_df, aes(x=test_number, y=grade, group=Annotation)) +
    geom_line() +           
    geom_point() +
    ggtitle(var) +
    scale_shape(guide = FALSE) +
    xlab("Test Date + Number") +
    # 自定义X轴刻度与标签
    scale_x_continuous(
      breaks = student_df$test_number,
      labels = x_tick_labels
    )
    # 若X轴标签过长可加下方代码调整角度避免重叠
    # + theme(axis.text.x = element_text(angle = 30, hjust = 1))
  plot_list[[var]] = p
}
pdf("all_students.pdf")
for (var in unique(all_students$students)) {
  print(plot_list[[var]])
}
dev.off()

注意事项

如果你的test_number字段存储为因子类型,只需将上述代码中的scale_x_continuous替换为scale_x_discrete即可,其余逻辑保持不变。

内容的提问来源于stack exchange,提问作者Blaze9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:45:09