图表无法使用Shiny R和NVD3渲染

时间:2015-03-28 12:04:02

标签: shiny nvd3.js rcharts

我一直在尝试使用NVD3库创建一个闪亮的时间序列图。对R,Shiny和NVD3来说相对较新。问题是,当我运行ShinyApp时,浏览器上没有图表呈现。使用chromes开发人员工具,我可以看到myChart的div是用数据创建和填充的,但不能理解为什么我看不到图表本身。

对此事的任何和所有帮助表示感谢...... 我的代码是这样的:

#ui.R
require(rCharts)

shinyUI(pageWithSidebar(
  headerPanel("Population Trend By Age Group:"),

  sidebarPanel(
    selectInput(inputId = "agegrp",
                label = "Choose Agegroup",
                choices = c("0-4",
                            "5-9",
                            "10-14",
                            "15-19",
                            "20-24",
                            "25-29",
                            "30-34",
                            "35-39",
                            "40-44",
                            "45-49",
                            "50-54",
                            "55-59",
                            "60-64",
                            "65-69",
                            "70-74",
                            "75-79",
                            "80-84",
                            "85+"
                ),
                selected = "0-4")
  ),
  mainPanel(
    showOutput("myChart", "nvd3")
  )
))

server.R:

#server.R
require(rCharts)

data <- read.csv("https://raw.githubusercontent.com/kilimba/data/master/data2.csv")
agegroup_mapping <- read.csv("https://raw.githubusercontent.com/kilimba/data/master/agegroup.csv")
data <- merge(data,agegroup_mapping,by.x="agegrp",by.y="agegroup")


shinyServer(function(input, output) {

  output$myChart <- renderChart({

    selection <- subset(data,mapping == input$agegrp)

    plot <- nPlot(n ~ year,
                  data = selection,
                  type = "lineChart",
                  group = "sex")
    # Add axis labels and format the tooltip
    plot$yAxis(axisLabel = "Population", width = 62)

    plot$xAxis(axisLabel = "Year")

    plot$save("ac.html")
    return(plot)    

  })
})

谢谢, Tumaini

1 个答案:

答案 0 :(得分:1)

使用renderChart2代替renderChart

rm(list = ls())
library(shiny)
library(rCharts)

data <- read.csv("https://raw.githubusercontent.com/kilimba/data/master/data2.csv")
agegroup_mapping <- read.csv("https://raw.githubusercontent.com/kilimba/data/master/agegroup.csv")
data <- merge(data,agegroup_mapping,by.x="agegrp",by.y="agegroup")

ui =pageWithSidebar(
  headerPanel("Population Trend By Age Group:"),

  sidebarPanel(
    selectInput(inputId = "agegrp",
                label = "Choose Agegroup",
                choices = c("0-4","5-9","10-14","15-19","20-24","25-29","30-34","35-39",
                            "40-44","45-49","50-54","55-59","60-64","65-69","70-74","75-79","80-84","85+"),selected = "0-4"),width=2),
  mainPanel(
    showOutput("myChart", "nvd3")
  )
)

server = function(input, output) {

  output$myChart <- renderChart2({
    #selection <-  data[data$mapping == "0-4",]
    selection <- data[data$mapping == input$agegrp,]

    selection <- subset(data,mapping == input$agegrp)

    plot <- nPlot(n ~ year,
                  data = selection,
                  type = "lineChart",
                  group = "sex")
    # Add axis labels and format the tooltip
    plot$yAxis(axisLabel = "Population", width = 62)
    plot$xAxis(axisLabel = "Year")
    plot$set(width=1600, height=800)

    plot$save("ac.html")
    plot
  })
}


runApp(list(ui = ui, server = server))