我正在用RMarkdown创建一个包含一些交互式绘图的HTML文件.在一些帮助下,我创建了一个下拉列表来过滤更改绘图的变量,但它使用了SHINY,所以我不能将其呈现为一个HTML文件.有没有什么方法可以不用SHINY添加一个下拉列表,这样我就可以拥有我的HTML文件了?

代码:

knitr::opts_chunk$set(echo = TRUE)

library(dplyr)
library(ggplot2)
library(plotly)

# data
data <- data.frame(
  anoobito = sample(2019:2023),
  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")))

# Create a ggplot object
gg <- 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(legend.position = "bottom",
            axis.line = element_line(colour = "black"),
            axis.text.x=element_text(colour="black"), axis.text.y=element_text(colour="black")) +  
      labs(
        x = "Ano do Óbito", # label do eixo X
        y = "Número de Óbitos",
        caption = "**Fonte**: SIM, SMS-RJ. Dados sujeitos a alterações.") 

# Create a plotly object from ggplot
p <- ggplotly(gg)

# Add a dropdown list for the variable "anoobito"
p <- p %>% layout(showlegend = F,
  updatemenus = list(
    list(
      x = 1.5,
      y = 0.8,
      buttons = list(
        list(method = "restyle",
             args = list("visible", list(TRUE, FALSE, FALSE, FALSE, FALSE)),
             label = "2019"),
        list(method = "restyle",
             args = list("visible", list(FALSE, TRUE, FALSE, FALSE, FALSE)),
             label = "2020"),
        list(method = "restyle",
             args = list("visible", list(FALSE, FALSE, TRUE, FALSE, FALSE)),
             label = "2021"),
        list(method = "restyle",
             args = list("visible", list(FALSE, FALSE, FALSE, TRUE, FALSE)),
             label = "2022"),
        list(method = "restyle",
             args = list("visible", list(FALSE, FALSE, FALSE, FALSE, TRUE)),
             label = "2023")
      )
    )
  )
)

p

看起来很奇怪我想删除图例,当我 Select 2019年时,它应该只显示2019年,而不是所有年份.图未显示geom_point.

enter image description here

推荐答案

当一年被选中时,你看不到geom_point(),对吗? GGlot认为anoobito是连续的.试着让它们成为因素,就像diadasemana:

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

You´ll get this: enter image description here

..and your geom_point() when selecting a year: enter image description here

PS.当心意大利面的图形!

R相关问答推荐

逐行替代引用前一行的for循环

使用列表列作为case_when LHS的输入

self_函数无法工作--无法子集结束后的列

将带有范围的字符串转换为R中的数字载体

按R中的组查找相邻列的行累积和的最大值

在位置周围设定一个半径并识别该半径内的其他位置

x[[1]]中的错误:脚注越界

r—绘制相交曲线

用derrr在R中查找组间的重复项

为什么在ggplot2中添加geom_text这么慢?

将包含卷的底部25%的组拆分为2行

根据元素和前一个值之间的差值过滤矩阵的元素

多个模拟序列间的一种预测回归关系

如何在分组条形图中移动相关列?

有没有办法使用ggText,<;Sub>;&;<;sup>;将上标和下标添加到同一元素?

计算直线上点到参考点的总距离

基于R中的辅助向量中的值有条件地连接向量中的字符串

如何使用包metaviz更改标签的小数位数?

生存时间序列的逻辑检验

我正在try 创建一个接近cos(X)的值的While循环,以便它在-或+1-E10范围内