2017-12-29 33 views
0

Ich versuche, eine glänzende App basierend auf New York Crime historischen Daten zu machen. Ich verwende einen einfachen glänzenden Seitenansatz. Hier sind die Daten: https://data.world/data-society/nyc-crime-dataWie Plotly Plots in glänzend korrekt ausgeben?

Aus irgendeinem Grund, wenn ich das Jahr auswählen, um die Verbrechensstatistik auszugeben, wird meine Ausgabe nur im Viewer von RStudio und nicht auf dem Hauptfenster des Glänzenden Popup ausgegeben. Hier ist der vollständige Code:

# Shiny App exploring New York City Crime Data between 2006-2016 
# Data Source: https://data.world/data-society/nyc-crime-data 

#########################Global Data###################### 

# Data Reading 
set.seed(123) 
library("shiny") 
library("lubridate") 
library("plotly") 
nypd<-read.csv("NYPD_Complaint_Data_Historic.csv") 

#Data Massaging 
nypd$year<-year(as.Date(nypd$RPT_DT,'%m/%d/%Y')) 
nypd$month<-month(as.Date(nypd$RPT_DT,'%m/%d/%Y')) 
nypd<-nypd[nypd$OFNS_DESC != "",] 
nypd2<-nypd[,c(1,6,8,14,16,17,22,23,25,26)] 

ui<-fluidPage(
titlePanel("New York City Crime Data from 2006-2016"), 
sidebarLayout(
    sidebarPanel(
    sliderInput("year","Year of Crime",min=2006,max=2016,value=2008,step = 1) 
    ), 
    mainPanel(plotOutput("crimeplot")) 
) 
) 


server<-function(input,output){ 
    output$crimeplot<-renderPlot({ 

    nypd_yr_sorted<-nypd2[nypd2$year==input$year,] 
    agg_data<-  aggregate(nypd_yr_sorted$CMPLNT_NUM,by=list(nypd_yr_sorted$OFNS_DESC),FUN=functi  on(x)length(unique(x))) 
    colnames(agg_data)<-c("Crime","Crime count") 
    bar_data<-agg_data[order(agg_data$`Crime count`, decreasing = TRUE),][1:5,] 
    plot_ly(bar_data,x=~Crime,y=~`Crime count`,type="bar",color = ~Crime) %>% layout(xaxis= list(showticklabels = FALSE)) 
    }) 

} 

shinyApp(ui = ui, server = server) 
+0

Sie verwenden eine Datendatei, die mehrere hundert MB groß ist. Können Sie nur ein paar Zeilen kopieren und einfügen, um Ihre App zumindest reproduzieren zu können, ohne diese riesige Datei herunterzuladen? – Phil

+0

@Phil - eigentlich ist es 1,3 GB, aber was ist ein paar hundert Megabyte unter Freunden? –

+1

@Piyush - konnten Sie die in meiner Antwort aufgeführten Änderungen vornehmen und Ihre glänzende App funktionieren lassen? –

Antwort

1

Plotly Charts mit plotlyOutput() und renderPlotly() gerendert werden. Zwei Änderungen am Code erforderlich:

  1. ändern mainPanel()-mainPanel(plotlyOutput("crimeplot"))
  2. ändern output$crimeplot zu output$crimeplot<-renderPlotly({

... und die Ausgabe:

enter image description here

+0

Danke für die schnelle Antwort. Es funktionierte. Aber meine Visualisierung ist nicht so gut wie Ihre: Ihre Behälter sind breiter und Farben sind lebendig. Ich bin sehr neugierig zu wissen, wie haben Sie sie zwicken? –

+0

@PiyushVerma - Ich habe keines der Argumente in plot_ly() aus dem ursprünglich angegebenen Code geändert. Welches Betriebssystem benutzen Sie? Ich habe das Diagramm unter OS X ausgeführt. Es ist möglich, dass einige der Standardeinstellungen je nach Betriebssystem variieren. –

Verwandte Themen