2016-07-29 3 views
0

Я пытаюсь создать блестящее приложение для гистограммы, чтобы показать последние данные за 13 месяцев. Я думаю, что я ударил о том, как пройти input$colname в aes() в ggplot()Создать блестящее приложение для прокатки 13 месяцев

# 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) 
+0

См [как форматировать ваш вопрос] (http://stackoverflow.com/help/formatting). Кроме того, убедитесь, что вы действительно задали вопрос. Непонятно, о чем вы спрашиваете. – MrFlick

+0

Прошу прощения, я пытаюсь отформатировать. но случайно он вышел онлайн. – user2612244

ответ

0

Наконец я это сделал. Моя логика на реактивной части была неправильной. Определением итоговых данных внутри реактивной инструкции и созданием 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") 

удалить ненужные colums

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 графиков;

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 (щ = щ, сервер = сервер)