2013-04-03 8 views
5

Nuovo principiante qui.R Shiny: non sono sicuro del motivo per cui ggplot non funziona

Sto provando a scrivere uno script R lucido, e una delle cose che voglio fare è generare un istogramma del numero di visualizzazioni di annunci per un dato giorno e un determinato inserzionista in diverse regioni.

Il mio tavolo è ha le seguenti colonne (con dati di esempio):

Date Impressions Advertiser Factor 1   DMA 

2/19  22789  McDonalds Cheap   Los Angeles 
2/17  15002 Regal Cinem Luxury   New York 
2/20  12345  McDonalds Cheap   D.C. 

mio output desiderato sulla scheda interfaccia utente è qualcosa di simile con ggplot

ggplot(df2, aes(x=DMA, y=Impressions, fill=DMA)) +geom_histogram() 

e dovrebbe apparire come questo

enter image description here

Tuttavia, sto ottenendo un errore

Error: object 'DMA' not found 

quando sto praticamente incollando la stessa formula in R Shiny. Il mio codice è il seguente

server.R

library(shiny) 
library(ggplot2) 

df<- na.omit(read.csv("data.csv", fill= TRUE, nrows= 3000000)) 

shinyServer(function(input, output){ 

df2<- reactive({df[df$Date==input$date & df$Advertiser==input$name, ]}) 

#FIXME why is this plot not printing 
output$plot1<- renderPlot({ 
    print(ggplot(df2, aes(x=DMA, y=Impressions, fill=DMA)) +geom_histogram()) 

}) 
#end of server brackets 
}) 

ui.R

library(shiny) 
df<- na.omit(read.csv("data.csv", fill= TRUE, nrows= 3000000)) 
daterange<- unique(df$Date) 
names <- unique(df$Advertiser) 

shinyUI(pageWithSidebar(

    #Title of Application 
    headerPanel("Advertisement"), 

    sidebarPanel( 

    selectInput("date", "Date:", 
       choices= daterange), 

    selectInput("name", "Partner", 
       choices= names) 

), 

    mainPanel(
    tabsetPanel(
     tabPanel("Plot1", plotOutput("plot1")) 

    ) 
    ) 

    #end of UI brackets 
)) 

tutto il resto funziona, tra cui le schede. Ma questa trama non viene mostrata.

AGGIORNAMENTO: GRAZIE, GGplot ora funziona avvolgendo l'istruzione print() attorno ad esso. Tuttavia, sorge un nuovo problema in cui una variabile non può essere trovata.

+5

Stai dicendo che la trama funziona normalmente, ma non quando in Shiny? Prova a inserire la trama in 'print()' ad es. 'p <- ggplot (...) + geom_histogram (...); stampa (p) '. – MadScone

+0

grazie. ggplot funziona ora, ma non è il tracciamento a causa di "Oggetto DMA non trovato" –

+1

'DMA' è sicuramente una colonna in' df2'? – MadScone

risposta

8

df2 non è i dati, ma una funzione reattiva. Utilizzare df2() in ggplot e non dimenticare di stampare come detto sopra.

Se succede qualcosa del genere, non dare per scontato che "DMA è lì", ma inserire uno print(str(df2)) nel punto critico.

+0

grazie, questo lo ha risolto. non è ancora intuitivo per me che df che ora rappresenti una funzione reattiva, impiegherà un po 'di tempo per abituarsi –

5

Prova avvolgendo l'oggetto ggplot con stampa()

+0

grazie ma anche i pls guardano il mio nuovo problema –

+0

print() era il mio pezzo mancante nel puzzle! – Raffael

Problemi correlati