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

R Shiny中plot_geo分级统计图z参数绑定UI输入不生效问题

问题翻译

我正在做一个R语言项目,使用plotly库的plot_geo()函数制作分级统计地图。如果直接给z参数传入固定变量,不管是在app.R文件运行还是控制台测试都能生成符合预期的统计图;但当我尝试把z参数设置为UI侧的用户输入值时,地图无法按照选中的变量填充颜色。


问题原因

你的代码存在两个错误导致功能失效:

  1. z = ~input$agg_data的传参逻辑错误:input$agg_data返回的是选中列的名称字符串,~运算符不会自动把字符串解析为数据框的对应列,相当于你给z参数传入了一个固定的字符串值,而非你想要的列数据。
  2. selectInput的默认选中值拼写错误:你聚合生成的列名是median_itinerary_fare,但默认选中值写的是不存在的median_itin_fare,初始加载时也会报错。

修复方案

你只需要修改server部分的代码即可,修改后逻辑如下:

server <- function(input, output, session) {
  
  output$state_map <- renderPlotly({
    # 用[[直接提取数据框中对应列的数值向量
    selected_col <- data2[[input$agg_data]]
    
    state_plot <- plot_geo(data = data2) %>%
      add_trace(locations = ~ORIGIN_STATE_ABR,
                z = selected_col,
                locationmode = 'USA-states',
                colors = 'Blues') %>%
      layout(geo = g,
             # 动态生成标题,匹配当前选中的变量
             title = paste(input$agg_data, " Across All States"))
  })
}

如果想要保留公式写法,也可以把z参数替换为z = ~get(input$agg_data),效果完全一致。

另外建议同步修正selectInput的默认值,避免初始加载报错:

selectInput(
  inputId = "agg_data",
  label = "Select an Aggregated Variable: ",
  choices = colnames(data2)[2:7],
  selected = "median_itinerary_fare" # 修正为实际存在的列名
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:06:03