2017-12-22 6 views
1

私は光沢のある、非常に単純なグラフを作ってみたいですが...私はそれを取得しません...それは燭台のグラフです...私はyahoo金融からデータを読み込みますそれはリストにあり、わたしが見たいものに従ったデータフレームを作成します...しかし、それは動作しません: "最初の引数、data、データフレームまたは共有データでなければなりません"誰かが私が間違って作られたものを見つけた場合 R輝く反応的なプロットグラフ

library(shiny) 
library(quantmod) 
library(lubridate) 
library(plotly) 
library(dplyr) 
trim<-Sys.Date()- months(3) 
#floor_date(ajd,"month") 

comp<-c("CAC 40","Total","Sanofi","BNP","LVMH","Airbus","Axa","L'Oreal","Air Liquide","Danone","Vinci","Schneider","Societe Generale","Kering","Orange") 
ref<-data.frame("^FCHI","FP.PA","SAN.PA","BNP.PA","MC.PA","AIR.PA","CS.PA","OR.PA","AI.PA","BN.PA","DG.PA","SU.PA","GLE.PA","KER.PA","ORA.PA") 
colnames(ref)<-comp 

for (i in 1:length(comp)){ 
    stock<-ref[1,i] 
    stock<-as.character(stock) 
    getSymbols(stock,src="yahoo",from=trim,to=Sys.Date()) 
} 
for (i in 1:length(comp)){ 
    ref[,i]<-as.character(ref[,i]) 
} 
ref[,1]<-c("FCHI") 

data<-list() 
for (i in 1:length(comp)){ 
    data[[i]]<-get(ref[,i]) 
} 



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

    # Application title 
    titlePanel("Top companies of CAC 40 Analysis"), 

    # Sidebar with a slider input for number of bins 
    sidebarLayout(
    sidebarPanel(
     h1("Companies"), 
     selectInput("titre","Company:", 
        choice=colnames(ref)), 
     hr(), 
     helpText("Data from yahoo finance") 
    ), 

    # Show a plot of the generated distribution 
    mainPanel(
     h3("Evolution du cours"), 
     plotlyOutput("graph") 
    ) 
) 
)) 


library(shiny) 
library(quantmod) 
library(lubridate) 
library(plotly) 
library(dplyr) 



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

    sortie<-reactive({ 
    compa<-input$titre 
    temp<-data.frame(Date=index(data[[compa]]),coredata(data[[compa]])) 
    colnames(temp)<-c("Date","Open","High","Low","Close","Volume","Adjusted") 
    }) 

    output$graph <- renderPlotly({ 
    plot_ly(sortie,x=sortie$Date,type="candlestick", 
      open=sortie$Open,close=sortie$Close,high=sortie$High,low=sortie$Low) 
    layout(title="Quaterly evolution") 
    }) 


}) 

...

+0

反応データフレームが必要'sortie()' –

+0

はい、私はそれを忘れましたが、まだ動作しません...私もtemp $日付などによってsortie $日付を変更しましたが、まだ動作しません –

答えて

1

こんにちはWASA 最初あなたのコードで問題のカップルは名前付きリストので、私はcomnp

の右のインデックスを取得するために

temp<-data.frame(Date=index(data[[which(compa == comp)]]),coredata(data[[which(compa == comp) ]])) 

にライン

temp<-data.frame(Date=index(data[[compa]]),coredata(data[[compa]])) 

を変更し、あなたがsortieからのデータフレームを返すいなかったのではなくでした列名のベクトル。この問題を解決するには、の末尾にsortieのコールを追加しました。 Ryanがすでにsortieの後ろの括弧でコメントした最後のこと。以下は、サーバーコードの実際のバージョンです。私は何も変えていない。

function(input, output) { 

    Sortie<-reactive({ 
    compa<-input$titre 
    temp<-data.frame(Date=index(data[[which(compa == comp)]]),coredata(data[[which(compa == comp) ]])) 
    colnames(temp)<-c("Date","Open","High","Low","Close","Volume","Adjusted") 
    temp 
    }) 

    output$graph <- renderPlotly({ 
    sortie <- Sortie() 
    plot_ly(sortie,x=sortie$Date,type="candlestick", 
      open=sortie$Open,close=sortie$Close,high=sortie$High,low=sortie$Low) %>% 
     layout(title="Quaterly evolution") 
    }) 


} 
1

それはそれだったが、私は、UIのコードでリスト内の企業の名前を追加しました:

data<-list() 
for (i in 1:length(comp)){ 
    data[[i]]<-get(ref[,i]) 
} 
names(data)<-comp 

をだから私の元のコードは、それに動作します後:

shinyServer(function(input, output) { 

    sortie<-reactive({ 
    compa<-input$titre 
    temp<-data.frame(Date=index(data[[compa]]),coredata(data[[compa ]])) 
    colnames(temp)<-c("Date","Open","High","Low","Close","Volume","Adjusted") 
    temp 
    }) 

    output$graph <- renderPlotly({ 
    sortie<-sortie() 
    plot_ly(sortie,x=~Date,type="candlestick", 
      open=~Open,close=~Close,high=~High,low=~Low)%>% 
      layout(title="Quarterly evolution") 
    }) 


}) 
関連する問題