Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在X轴上显示日期的图形_R_Ggplot2_Shiny - Fatal编程技术网

R 在X轴上显示日期的图形

R 在X轴上显示日期的图形,r,ggplot2,shiny,R,Ggplot2,Shiny,我计划使用此数据框进行交互式绘图: visits <- structure(list(date = structure(c(17000, 17001, 17002, 17003, 17004, 17005, 17006, 17007, 17008, 17009, 17010, 17011, 17012, 17013, 17014, 17015, 17016, 17017, 17018, 17019, 17020, 17021, 17022, 17023, 17024, 17025,

我计划使用此数据框进行交互式绘图:

visits <- structure(list(date = structure(c(17000, 17001, 17002, 17003, 
17004, 17005, 17006, 17007, 17008, 17009, 17010, 17011, 17012, 
17013, 17014, 17015, 17016, 17017, 17018, 17019, 17020, 17021, 
17022, 17023, 17024, 17025, 17026, 17027, 17028, 17029, 17030, 
17031, 17032, 17033, 17034, 17035, 17036, 17037, 17038, 17039, 
17040, 17041, 17042, 17043, 17044, 17045, 17046, 17047, 17048, 
17049, 17050, 17051, 17052, 17053, 17054, 17055, 17056, 17057, 
17058, 17059, 17060, 17061, 17062, 17063, 17064, 17065, 17066, 
17067, 17068, 17069, 17070, 17071, 17072, 17073, 17074, 17075, 
17076, 17077, 17078, 17079, 17080, 17081, 17082, 17083, 17084, 
17085, 17086, 17087, 17088, 17089, 17090, 17091, 17092, 17093, 
17094, 17095, 17096, 17097, 17098, 17099, 17100), class = "Date"), 
    visits = c(64, 118, 86, 90, 59, 53, 31, 62, 66, 1161, 719, 
    209, 944, 610, 197, 136, 110, 106, 232, 145, 100, 105, 121, 
    85, 137, 91, 139, 83, 73, 91, 81, 85, 74, 65, 80, 732, 337, 
    144, 113, 107, 76, 126, 127, 125, 264, 181, 118, 61, 113, 
    119, 101, 261, 122, 89, 693, 603, 392, 129, 120, 136, 84, 
    72, 74, 133, 104, 93, 83, 244, 210, 103, 108, 109, 111, 72, 
    74, 88, 77, 90, 84, 86, 90, 79, 65, 81, 199, 134, 93, 177, 
    207, 88, 75, 283, 721, 544, 403, 235, 116, 118, 161, 280, 
    186)), .Names = c("date", "visits"), row.names = 200:300, class = "data.frame")

如果我没有打开
输入面板
,我会看到ggplot。因此,我这里的问题是如何使其与上面要求的选项交互。

我们可以根据用户输入的内容进行分组,然后我们可以使用
aes_string
内部
ggplot
将x和y作为字符串接受

library(shiny)
library(dplyr)
library(lubridate)
#Load Visits
ui <- fluidPage(
  inputPanel(
  selectInput("visits", label = "Dates",
  choices = c("Days", "Weeks", "Months", "Years"), selected = 'Days')
  ),
  mainPanel(plotOutput('plt'))
)

server <- function(input, output, session) {
  df <- reactive({
  if(input$visits=='Days'){
  visits_final <- visits %>% group_by(Days = date) 
  }else if(input$visits=='Weeks'){
  visits_final <- visits %>% group_by(Weeks = week(date))
  } else if(input$visits=='Months'){
  visits_final <- visits %>% group_by(Months = month(date)) 
  } else if(input$visits=='Years'){
  visits_final <- visits %>% group_by(Years = year(date)) 
  }
  visits_final <- visits_final %>% summarise(Visits=sum(visits, na.rm = TRUE))
  })

  #TO check your df befor ploting
  observe(print(df()))

  output$plt <- renderPlot({
  ggplot(df(), aes_string(x =input$visits, y = "Visits")) +
  geom_point() +
  geom_line(lwd=0.1)
  })
}
shinyApp(ui, server)
库(闪亮)
图书馆(dplyr)
图书馆(lubridate)
#负载访问

ui参见dplyr中的“润滑周、月和年”和“润滑组”。在将数据集发送到
renderPlot
之前,将这些与switch或if语句结合起来,在reactive中处理数据集。谢谢,我会尝试一下,让您知道哇,太棒了。然而,我仍然有问题。在我最初的数据框架中,我有过去4年的数据。当选择月份时,它会将所有月份合并在一起,不管是哪一年。我一直在lubridate中搜索,例如,没有名为yearmonth()的函数。。。有什么想法吗?不幸的是,我不知道,但你可以尝试一些类似于
访问%>%groupby(Months=paste0(year(date),'-',month(date))
的方法。
library(shiny)
library(dplyr)
library(lubridate)
#Load Visits
ui <- fluidPage(
  inputPanel(
  selectInput("visits", label = "Dates",
  choices = c("Days", "Weeks", "Months", "Years"), selected = 'Days')
  ),
  mainPanel(plotOutput('plt'))
)

server <- function(input, output, session) {
  df <- reactive({
  if(input$visits=='Days'){
  visits_final <- visits %>% group_by(Days = date) 
  }else if(input$visits=='Weeks'){
  visits_final <- visits %>% group_by(Weeks = week(date))
  } else if(input$visits=='Months'){
  visits_final <- visits %>% group_by(Months = month(date)) 
  } else if(input$visits=='Years'){
  visits_final <- visits %>% group_by(Years = year(date)) 
  }
  visits_final <- visits_final %>% summarise(Visits=sum(visits, na.rm = TRUE))
  })

  #TO check your df befor ploting
  observe(print(df()))

  output$plt <- renderPlot({
  ggplot(df(), aes_string(x =input$visits, y = "Visits")) +
  geom_point() +
  geom_line(lwd=0.1)
  })
}
shinyApp(ui, server)