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

求助:如何使用R语言创建2019-2021年图书馆月度到馆人数多折线图

解决R语言多折线图绘制问题

嗨,我来帮你搞定这个图书馆到馆人数的多折线图!先梳理下你代码里的几个小问题,再给你修正后的完整流程:

原代码里的几个小错误

  • 安装readxl的语句漏了闭合的引号和括号,正确写法是install.packages("readxl")
  • lapply里的functions是笔误,应该是function
  • Excel文件路径和文件名有空格/符号错误,比如"-/Desktop/..."应该改成"~/Desktop/patron stats.xlsx"(~代表你的用户主目录),读取时的文件名也别加多余空格
  • ggplot的语法问题:图层之间必须用+连接,而且aes映射参数有误,分组应该按年份(也就是工作表名称),不是Patron Count

修正后的完整代码

# 安装需要的包(tidyverse已经包含dplyr、tidyr、ggplot2,所以可以简化)
install.packages("readxl")
install.packages("tidyverse")

# 加载库
library(readxl)
library(tidyverse)

# 导入Excel文件并获取工作表名称
# 注意修改成你实际的文件路径,确保路径正确
file_path <- "~/Desktop/patron stats.xlsx"
sht <- excel_sheets(file_path)
sht

# 将每个工作表读取到列表中,修正function拼写和文件路径
df_list <- lapply(setNames(sht, sht), function(s) {
  read_excel(file_path, sheet = s)
})

# 转换为包含年份(工作表名称)的单个数据框
df <- bind_rows(df_list, .id = "Year")  # 把Sheet改成Year更直观

# 处理月份顺序(避免x轴月份乱序):把Month转成因子,按1-12月排序
df <- df %>%
  mutate(Month = factor(Month, levels = c("1月", "2月", "3月", "4月", "5月", "6月", 
                                         "7月", "8月", "9月", "10月", "11月", "12月")))
# 如果你的Month是英文的,就改成levels = month.name或者month.abb

# 绘制多折线图
ggplot(data = df, aes(x = Month, y = `Patron Count`, group = Year, color = Year)) +
  geom_line(linewidth = 1) +  # 设置线宽让折线更清晰
  geom_point(size = 2) +      # 设置点的大小
  ylab("到馆人数") +          # 可以改成中文更直观,或者保留英文"Patron Count"
  xlab("月份") +
  theme_minimal() +           # 用简洁的主题
  labs(title = "2019-2021年图书馆每月到馆人数", color = "年份") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  # 旋转x轴标签避免重叠

代码解释

  1. 数据读取:用excel_sheets获取所有工作表名称,再用lapply批量读取每个工作表,最后bind_rows合并成一个数据框,并用.id参数添加年份列(把原来的Sheet改成Year更易懂)
  2. 月份排序:把Month转成因子并指定顺序,这样x轴的月份会按自然顺序排列,不会乱序
  3. 绘图部分:
    • aes里用group=Year让每年的数据画成一条折线,color=Year给不同年份的折线分配不同颜色
    • 用+连接所有ggplot图层,这是ggplot的核心语法,不能漏掉
    • 添加标题、坐标轴标签,旋转x轴标签避免重叠,用theme_minimal让图表更美观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 13:57:45