【问题标题】:Create Shiny app for rolling 13 months为滚动 13 个月创建闪亮的应用程序
【发布时间】:2016-07-29 20:47:55
【问题描述】:

我正在尝试为直方图创建一个闪亮的应用程序,以显示过去 13 个月的数据。我想我对如何在aes() 中通过input$colnameggplot() 中感到震惊

# required  library
library(shiny)
library(ggplot2)
library(dplyr)
library(scales)
library(lubridate)

# function to calculate first day of last month;
endF <- function(x) {
    as.Date(format(x, "%Y-%m-01"))
}

startF <- function(x) {
    as.Date(format(x - months(6), "%Y-%m-01"))
}

ui <- fluidPage(
    dateRangeInput(
        "Range",
        "Date range:",
        start  = as.date(startF(startF(Sys.Date()))),
        end    = as.date(endF(endF(Sys.Date()) - 1)),
        #format = "mm/dd/yyyy",
        separator = " - "
    ),
    plotOutput("hist"))

# Read .csv files
TotalIncident <- read.csv(file = "TotalIncidents.csv", head = TRUE, sep = ",")
# create  Range  as  date
TotalIncident$Range <-as.Date((TotalIncident$DateRange), format = "%Y-%m-%d")
# remove  unnecessary value
TotalIncident1 <- TotalIncident[c(-1)]

# rolling  data for 13 months;
Finaldata <-reactive({TotalIncident1[TotalIncident1$Range >= input$RangeInput[1] &
                                         TotalIncident1$Range <= input$RangeInput[2],]})

# Define a server for the Shiny app
server <- function(input, output) {
    output$hist <- renderPlot({
        p <- ggplot(data = Finaldata(),aes(x = Range, 
                                           y = Number.of.Incidents)) +
            geom_bar(stat = "identity", fill = "blue") +
            scale_x_date(
                date_breaks  = "1 month",
                labels = date_format("%b %y"),
                expand = c(0, 0)) +
            ylab("Total Incidents") + xlab("Mon YY") +
            geom_text(aes(label = Number.of.Incidents), 
                      size = 3,hjust = 0.5,vjust = 2) +
            #theme for  backgroud
            theme_bw() +
            theme(plot.background = element_blank(), 
                  panel.grid.major = element_blank() , 
                  panel.grid.minor = element_blank()) + 
            theme(panel.border = element_blank()) + 
            theme(axis.line = element_line(color = "black", size = "2"))
    })
}


shinyApp(ui = ui, server = server)

【问题讨论】:

  • how to format your question。另外,请确保您确实提出了问题。不清楚你在问什么。
  • 很抱歉,我正在尝试格式化。但一不小心就上线了。

标签: r histogram shiny


【解决方案1】:

我终于做到了。我对反应部分的逻辑是错误的。在响应式语句中定义 Finaldata 并创建 Passdata 是关键。希望它对其他用户有所帮助。 有用的链接: http://chrisbeeley.net/website/shinytalk/googleAnalytics.html

必要的库;

library(shiny)
library(ggplot2)
library(dplyr)
library(plyr)
library(scales)
library(lubridate)

读取 .csv 文件

TotalIncident <-read.csv(file = "TotalIncidents.csv", head = TRUE, sep = ",")

将范围创建为日期

TotalIncident$Range <-as.Date((TotalIncident$DateRange), format = "%Y-%m-%d")

删除不必要的列

TotalIncident1 <- TotalIncident[c(-1)]
Dates <- as.Date(TotalIncident$DateRange,format="%Y-%m-%d")
minval <- min(Dates)
maxval <- max(Dates)

用户界面

ui <- fluidPage(
  dateRangeInput("dateRange", "Date range:",
                 start = minval,
                 end = maxval ),
  plotOutput("monthGraph")
)

服务器.r

server <- function(input,output){
  #Reactive datasets;
  passData <- reactive({

    FinalData <-   TotalIncident1[TotalIncident1$Range %in% 
                  input$dateRange[1]:input$dateRange[2], ]
  })

#输出图表;

output$monthGraph <- renderPlot({
    ggplot(passData(),aes(x=Range,y=Number.of.Incidents)) +
     geom_bar(stat = "identity", fill = "#6495ED")  + scale_x_date(
      date_breaks  = "1 month",
      labels = date_format("%b %y"),
      expand = c(0, 0)) +
      ylab("Total Incidents") + xlab("Mon YY") +
      geom_text(aes(label = Number.of.Incidents),size = 3,hjust = 0.5,vjust = 2,color="black") +
      ggtitle("Total Number of Incidents Opened")+
      #theme for  backgroud
      theme_bw() +
      theme(plot.background = element_blank(),panel.grid.major = element_blank(),
            panel.grid.minor = element_blank()) +
      theme(panel.border = element_blank()) +theme(axis.line = element_line(color = "black"
                                                                            , size = "2"))
  })  
}

shinyApp(ui = ui, server = server)

【讨论】:

    猜你喜欢
    • 2016-09-09
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 2022-06-25
    • 2021-11-10
    • 1970-01-01
    相关资源
    最近更新 更多