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

在RMarkdown HTML文件中为ggplot添加下拉筛选列表

解决ggplotly图表年份线条重叠:添加下拉筛选并隐藏图例

要解决线条重叠问题,同时实现按死亡年份(anoobito)筛选的下拉菜单、隐藏图例,直接修改ggplotly的布局配置即可。以下是完整的修改后代码:

library(tidyverse)
library(plotly)

set.seed(123) # 设置随机种子保证结果可复现
data <- data.frame(
  anoobito = sample(2019:2023, 23000, replace = TRUE), # 修正原代码sample参数问题,确保生成23000行数据
  diadasemana = sample(c("Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado", "Domingo"), 23000, replace = TRUE)
)

dia <- data %>%
  group_by(anoobito, diadasemana) %>%
  tally %>%
  mutate(diadasemana = factor(diadasemana, levels = c("Domingo","Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado")))

plot <- ggplot(dia, aes(x = diadasemana, y = n, group = anoobito)) +
  geom_line(aes(color = anoobito), size = 2) +
  geom_point(aes(color = anoobito), size = 3) +
  theme_minimal(base_size = 15) +
  scale_y_continuous(limits = c(0,1000), expand = expansion(mult = c(0, .1))) +
  theme(
    axis.line = element_line(colour = "black"),
    axis.text.x=element_text(colour="black"), 
    axis.text.y=element_text(colour="black")
  ) +  
  labs(
    x = "Dia da Semana", # 修正原x轴标签错误,原代码x标签写的是年份,但x轴是星期几
    y = "Número de Óbitos",
    caption = "**Fonte**: SIM, SMS-RJ. Dados sujeitos a alterações."
  ) 

# 转换为ggplotly并添加下拉筛选、隐藏图例
pp <- ggplotly(plot) %>%
  layout(
    legend = list(visible = FALSE), # 隐藏图例
    updatemenus = list(
      list(
        type = "dropdown",
        active = 0, # 默认选中第一个选项(2019年)
        buttons = lapply(unique(dia$anoobito), function(year) {
          # 计算当前年份对应的trace索引:每个年份对应线条和点两个trace
          trace_indices <- seq((year - 2019)*2, (year - 2019)*2 + 1)
          list(
            label = as.character(year),
            method = "restyle",
            args = list(
              "visible",
              # 设置所有trace为不可见,再把当前年份的trace设为可见
              lapply(0:(length(.$x$data)-1), function(i) i %in% trace_indices)
            )
          )
        })
      )
    )
  )

pp

关键修改说明:

  1. 修正原代码问题:原sample(2019:2023)仅生成5个值,调整为sample(2019:2023, 23000, replace = TRUE)保证生成23000行数据;同时修正x轴标签错误(原标签写的是"Ano do Óbito",但x轴是星期几,改为"Dia da Semana")。
  2. 隐藏图例:在layout中设置legend = list(visible = FALSE),彻底隐藏图例。
  3. 添加下拉筛选:
    • 通过updatemenus创建下拉菜单,每个按钮对应一个死亡年份。
    • 每个年份对应两个trace(线条和散点),计算对应索引后,设置仅当前年份的trace可见,其余隐藏。
    • 默认选中第一个年份(2019),可以通过active参数调整默认选项。

内容的提问来源于stack exchange,提问作者Lana Meijinhos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:01:10