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

R语言绘制足球传球场图报错object 'x' not found

报错根因

运行抛出object 'x' not found错误由三处代码逻辑不规范导致:

  • geom_point参数传参不符合ggplot2语法:传入数据集时未显式声明data =形参,且aes()映射内部使用data_player$Resultado的外部取列写法,会破坏图层的映射继承关系。
  • ggMarginal调用方式错误:该函数默认从传入的ggplot对象中自动提取x、y轴映射,不需要手动传入x、y参数。你手动传入的x = x1 - 258.015、y = y1在当前运行环境无对应变量定义,直接触发对象不存在的报错;且此处x轴偏移量与散点图层使用的x1 - 58.015不一致,即使不报错也会出现坐标错位问题。
  • ggplot初始化未绑定全局数据与映射:使用空ggplot()初始化绘图对象,未全局声明数据集和基础x、y映射,会导致ggMarginal无法自动识别需要统计的字段。
修正后可运行代码
library(ggplot2)
library(readr)
library(gridExtra)
library(ggforce)
library(ggExtra)

# 读取数据,替换为你本地的文件实际存储路径即可
full_data <- read_delim("full_data.txt", ";", 
                        locale = locale(decimal_mark = ","), 
                        trim_ws = TRUE)

# 筛选目标球员、赛事的传球数据
jugador_elegido <- "Sergio Busquets"
rival_elegido <- "Real Madrid"
donde <- "2"
evento_elegido <- "Pass All"
data_player <- subset(full_data, 
                      nombre_jugador == jugador_elegido & 
                      Rival == rival_elegido & 
                      Local == donde & 
                      Sección == evento_elegido)

# 绘制带足球场底图的传球散点图
player_scatter_plot <- ggplot(data = data_player, 
                              # 全局声明x、y映射,供ggMarginal自动识别
                              mapping = aes(x = x1 - 58.015, y = y1)) +
  geom_point(aes(fill = factor(Resultado)),
             shape = 21,
             size = 5) +
  guides(fill = guide_legend(title = NULL)) +
  # 绘制足球场边界、禁区、中圈等场地元素
  geom_rect(mapping = aes(xmin = 0.0, xmax = 596.97, ymin = 50.5, ymax = 446.5), 
            color = "#00529f", fill = NA, alpha = 0.1) +
  geom_rect(mapping = aes(xmin = 0.0, xmax = 91.935, ymin = 128.975, ymax = 368.025), 
            color = "#00529f", fill = NA, alpha = 0.1) +
  geom_rect(mapping = aes(xmin = 505.035, xmax = 596.97, ymin = 128.975, ymax = 368.025), 
            color ="#00529f", fill = NA, alpha = 0.1) +
  geom_rect(mapping = aes(xmin = 0.0, xmax = 29.858, ymin = 195, ymax = 302.0), 
            color ="#00529f", fill = NA, alpha = 0.1) +
  geom_rect(mapping = aes(xmin = 567.112, xmax = 596.97, ymin = 195, ymax = 302.0), 
            color ="#00529f", fill = NA, alpha = 0.1) +
  geom_linerange(aes(x = 298.485, ymin = 50.5, ymax = 446.5),
                 color = "#00529f") +
  geom_point(mapping = aes(x = 66.33, y = 248.5), size = 1, color = "#00529f") +
  geom_point(mapping = aes(x = 530.64, y = 248.5), size = 1, color = "#00529f") +
  geom_circle(mapping = aes(x0 = 298.485, y0 = 248.5, r = 52),
              color = "#00529f") +
  coord_fixed() +
  theme_no_axes(base.theme = theme_bw()) +
  theme(legend.position = c(0.5, 0.04),
        legend.box = "horizontal",
        legend.direction = "horizontal",
        legend.box.background = element_rect(fill = "transparent", colour = "transparent"),
        legend.text = element_text(size = 14),
        panel.border = element_blank(),
        axis.title = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank()) +
  scale_x_continuous(limits = c(0,647.47), expand = c(0,0)) +
  scale_y_continuous(limits = c(0,497), expand = c(0,0))

# 生成带边缘分布直方图的最终场图,无需手动传入x、y参数
ggMarginal(player_scatter_plot,
           type = "histogram",
           xparams = list(breaks = seq(0,600,50),
                          color = "#00529f"),
           yparams = list(breaks = seq(50,450,50),
                          color = "#00529f")
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:39:22