来自API的闪亮加载数据

时间:2018-01-18 10:31:52

标签: r shiny

我正在尝试制作一个闪亮的应用程序来加载来自不同API的一些数据,直接进行一些分析,比如图... 我搜索了闪亮的网站,我找不到办法。我的数据不想加载到图表上,我认为这是因为我直接在服务器页面上加载数据,因为我只想加载想要的数据......数据来自欧洲中央银行的ecb包,其中加载来自其API的数据。这是我的代码:

UI

library(shiny)
#library(quantmod)
library(lubridate)
library(plotly)

library(ggplot2)


ti<-c("PIB","MM_M3","Taux_d_Inflation")
data<-data.frame("ICP.M.U2.N.000000.4.ANR","BSI.M.U2.Y.V.M30.X.I.U2.2300.Z01.A","MNA.Q.Y.I8.W2.S1.S1.B.B1GQ._Z._Z._Z.EUR.LR.GY")
colnames(data)<-ti


# Define UI for application that draws a histogram
shinyUI(fluidPage(

  # Application title
  titlePanel("Evolution Economique"),

  # Sidebar with a slider input for number of bins 
  sidebarLayout(
    sidebarPanel(
      h1("Indicateur Europe"),
      selectInput("chiffre","Indicateur:",
                  choice=ti),
      #downloadButton("downloadData", "Download"),
      actionButton("go","Load"),
      hr(),
      helpText("Donnees Banque Centrale Europeenne")
    ),

    # Show a plot of the generated distribution
    mainPanel(
      plotlyOutput("graph")
    )
  )
))

服务器

library(shiny)
library(lubridate)
library(plotly)
library(ggplot2)
library(ecb)

# Define server logic required to draw a histogram
shinyServer(function(input, output) {


  observeEvent(input[["go"]],handlerExpr = {
    compa<-input$chiffre
    compa<-as.character(compa)
    temp<-data[[compa]]
    temp<-as.character(temp)
    temp<-data.frame(Date=ymd(as.character(get_data(temp)$obstime),"%Y-%m"),Valeur=get_data(temp)$obsvalue)
    temp<-get_data(temp)
    temp<-data.frame(Date=temp$obstime,Valeur=temp$obsvalue)
    temp
    })


  output$graph <- renderPlotly({
    plot_ly(temp,x=~Date,
            y=~Valeur,type="scatter",mode="lines")
    #layout(title="Quaterly evolution")
  })


})

1 个答案:

答案 0 :(得分:1)

您的图表无法识别tempobserveEvent内本地启动的对象,请尝试使用eventReactive

# Define server logic required to draw a histogram
shinyServer(function(input, output) {


  temp <- eventReactive(input$go,{
    req(input$chiffre)
    compa<-input$chiffre
    compa<-as.character(compa)
    temp<-data[[compa]]
    temp<-as.character(temp)
    temp<-data.frame(Date=ymd(as.character(get_data(temp)$obstime),"%Y-%m"),Valeur=get_data(temp)$obsvalue)
    temp<-get_data(temp)
    temp<-data.frame(Date=temp$obstime,Valeur=temp$obsvalue)
    temp
  })


  output$graph <- renderPlotly({
    plot_ly(temp(),x=~Date,y=~Valeur,type="scatter",mode="lines")
    #layout(title="Quaterly evolution")
  })


})