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

导入多份垒球统计CSV文件绘制球员BattingAVG与OBP周度变化轨迹

垒球球员赛季击球率与上垒率周度变化轨迹实现方案

第一步:批量导入所有周次CSV并合并为全量数据集

核心逻辑为匹配指定规则的文件名批量读取文件,自动为每一份数据增加周次标识后合并,复用原有清洗逻辑统一处理所有数据:

library(tidyverse)
library(ggrepel)

# 匹配当前工作目录下所有符合命名规则的周统计CSV文件
file_list <- list.files(pattern = "^teamstats_week\\d+\\.csv$")

# 批量读取、清洗、合并所有周次数据
all_week_data <- map_dfr(file_list, function(file_path) {
  # 从文件名提取周次数字
  week_num <- as.integer(str_extract(file_path, "\\d+"))
  # 读取单周原始数据
  week_raw <- read.csv(file_path, skip = 1, stringsAsFactors = FALSE)
  # 清洗数据并新增周次字段
  cleaned_data <- week_raw %>% 
    mutate(
      Week = week_num,
      BattingAVG = as.double(AVG) * 1000, 
      OnBasePercentage = as.double(OBP) * 1000, 
      GamesPlayed = as.numeric(GP), 
      PlayerNumber = as.integer(Number)
    ) %>%
    select(Week, PlayerNumber, First, GamesPlayed, BattingAVG, OnBasePercentage) %>% 
    filter(PlayerNumber < 100, GamesPlayed > 6)
  return(cleaned_data)
})

第二步:绘制带变动轨迹的关联散点图

核心逻辑为按球员分组,用带箭头的路径连接同一名球员不同周次的点位,直观体现指标变动方向,仅在最新周次标注姓名避免图表混乱:

ggplot(all_week_data, aes(x = BattingAVG, y = OnBasePercentage, group = PlayerNumber)) + 
  # 绘制球员周度变化轨迹,箭头指向最新周次
  geom_path(
    aes(color = as.factor(PlayerNumber)),
    arrow = arrow(type = "closed", length = unit(0.1, "inches")), 
    linewidth = 0.8, alpha = 0.7
  ) +
  # 绘制散点,周次越新点位越大
  geom_point(aes(size = Week, color = as.factor(PlayerNumber)), alpha = 0.8) +
  # 仅在最新周次点位旁标注球员姓名
  geom_text_repel(
    data = filter(all_week_data, Week == max(Week)),
    aes(label = First), 
    size = 3,
    color = "black",
    max.overlaps = 20
  ) +
  # 图表信息优化
  labs(
    x = "击球率 (Batting AVG, *1000)",
    y = "上垒率 (On Base Percentage, *1000)",
    color = "球员编号",
    size = "统计周次"
  ) +
  theme_bw()

可选优化方案

  • 若球队球员数量较少,可将颜色映射改为First,直接用球员姓名作为颜色图例
  • 可在坐标轴增加联盟平均水平的参考线,更直观对比球员指标位置
  • 可给散点增加GamesPlayed对应的透明度映射,出赛场次越多的球员点位越实

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:24:03