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

使用R语言crosstalk创建巨无霸调整指数日期滑块过滤器报错求助

问题修复与代码修正

核心错误点解析

  1. Crosstalk共享数据未初始化:filter_slider要求传入SharedData对象而非原始数据框,直接传rBMI会触发函数调用错误。
  2. 静态地图无法联动:原代码仅关联了单时间点的BMI数据,需将空间数据与全量时间数据做连接,再基于SharedData构建可交互地图。
  3. Leaflet语法错误:addPolygons存在括号未闭合、颜色映射逻辑错误的问题。
  4. 数据截断问题:仅取前56行数据丢失了多时间点记录,无法实现年份筛选。

修正后的完整代码

# 加载包
library(sf)
library(rnaturalearth)
library(rnaturalearthdata)
library(leaflet)
library(tidyverse)
library(crosstalk)

# 关闭科学计数法
options(scipen = 999)

# 读取数据(替换为你的文件路径)
big_mac_adjusted_index <- read_csv("C:/Users/19152/OneDrive/Desktop/Final2022FallRavina/FinalDataSet/big-mac-adjusted-index.csv")

# 数值列保留两位小数,转换日期格式
rBMI <- big_mac_adjusted_index %>% 
  mutate_if(is.numeric, ~round(., 2)) %>%
  mutate(date = as.Date(date))

# 获取世界空间数据
world <- ne_countries(scale = "medium", returnclass = "sf")

# 全连接空间数据与BMI数据(保留所有时间点)
world_mac <- left_join(world, rBMI, by = "iso_a3")

# 创建共享数据对象(实现地图与滑块联动的核心)
shared_world_mac <- SharedData$new(world_mac, group = "big_mac_index")

# 构建可交互地图
main_chart <- leaflet(shared_world_mac) %>%
  addTiles() %>%
  addPolygons(
    fillColor = ~colorQuantile("YlOrRd", adj_index, n = 5)(adj_index),
    fillOpacity = 0.7,
    color = "black",
    weight = 0.1,
    # 弹出窗口显示国家、日期和指数信息
    popup = ~paste0(
      "<strong>", name, "</strong><br>",
      "日期: ", date, "<br>",
      "调整后指数: ", adj_index
    )
  )

# 创建日期滑块并与地图联动
bscols(
  main_chart,
  filter_slider(
    id = "Date",
    label = "按年份筛选巨无霸指数",
    sharedData = shared_world_mac,
    column = ~date,
    step = 365  # 设置滑块步长为年,优化交互体验
  )
)

关键修正说明

  • SharedData对象创建:通过SharedData$new()将合并后的空间-属性数据转换为共享对象,实现滑块筛选与地图渲染的联动。
  • 全量数据保留:移除了原代码中对big_mac_adjusted_index的前56行截断,保留所有时间点数据以支持年份筛选。
  • Leaflet颜色映射修复:使用数据集中的adj_index(调整后巨无霸指数)作为颜色映射依据,修正了colorQuantile的调用逻辑。
  • 日期格式标准化:将date列转为Date类型,确保滑块能正确识别时间序列并按年份步进。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 14:35:15