2014-09-12 88 views
1

我正在开发一个Shiny应用程序,并且在与rCharts集成时遇到了麻烦。我用一个数据库“Cars93”做了一个简单的应用程序,每个人都可以访问这个数据库来解释我的问题。使用闪亮的rCharts

我在应用程序中放置了一张表格和一张图表,该表格仅用于测试数据是否正确。

我的问题是该图不出现。

提前致谢!

路易斯

ui.R

library(shiny) 
library(MASS) 
require(rCharts) 
options(RCHART_LIB = 'polycharts') 
mydata<-Cars93 

shinyUI(pageWithSidebar(
    headerPanel('RCharts - Test'), 
    sidebarPanel(

    selectInput("Manufacturer2", "Select a Manufacturer", levels(droplevels(mydata$Manufacturer)), 
          selected = "Acura" 
    ), 
    selectInput("Type2", "Select a Type", levels(droplevels(mydata$Type))[3:4],selected = levels(droplevels(mydata$Type))[3] 
    ), 




    width = 3 

), 
    mainPanel(
    tabsetPanel(

     tabPanel("Table",dataTableOutput('mytable')), 
     tabPanel("Chart",showOutput('myplot', 'polycharts')) 




    ) 
)) 
) 

server.R

library(shiny) 
library(rCharts) 
library(MASS) 
options(RCHART_WIDTH = 800) 
mydata<-Cars93 
data2<-Cars93 

shinyServer(function(input, output, session) { 

    observe({ 
    updateSelectInput(session, "Type2", choices = levels(droplevels(mydata$Type[mydata$Manufacturer %in% input$Manufacturer2])),selected = levels(droplevels(mydata$Type[mydata$Manufacturer %in% input$Manufacturer2]))[1] 
    ) 
    }) 

    output$mytable = renderDataTable({ 
    MANUFACTURER = input$Manufacturer2 
    TYPE = input$Type2 
    mydata<- mydata[mydata$Manufacturer %in% MANUFACTURER & mydata$Type %in% TYPE,] 
    mydata<-mydata[,c("Manufacturer","Type","Model","Weight")] 
    mydata 
    }) 

    output$myplot<- renderChart({ 
    MANUFACTURER = input$Manufacturer2 
    TYPE = input$Type2 
    mydata<- mydata[mydata$Manufacturer %in% MANUFACTURER & mydata$Type %in% TYPE,] 
    p1<-rPlot(Weight ~ Model, color = 'Model', data = mydata, type = 'bar') 

    p1$guides(
     color = list(
     numticks = length(factor(mydata$Model)) 
    ), 
     y = list(
     min = 0, 
     max = 10 
    ) 
    ) 
    return(p1) 
    }) 

}) 
+0

您需要设置'dom'。在'renderChart'中使用'p1 $ set(dom =“myplot”)'或者使用'renderChart2'来代替'renderChart'。 – jdharrison 2014-09-12 18:25:12

+0

它的工作!非常感谢,@ jdharrison! – 2014-09-12 18:29:50

回答

2

如果在您的服务器功能使用renderChart您需要设置dom

p1$set(dom = "myplot") 

其中dom应该取相同的值即outputrenderChart

分配替代地有一个方便的renderChart2,可用于代替renderChart然后dom犯规需要设置。

+0

这个程序有另一个问题,我想它是在“观察”功能。根据用户对制造商或类型的选择,Type不会刷新,并且不会显示绘图。 – 2014-09-12 21:05:08

+0

也许开始另一个问题与它不起作用的例子 – jdharrison 2014-09-12 21:17:11