2017-07-22 48 views
0

生成下拉菜单这是我对股票波动代码10只个股:为Plotly图表

##------------producing stock volatility plot---------## 

p1 = ggplot(Closed_Price_Return, aes(Date, R.BPCL)) + geom_line(color = "blue") + 
    theme_bw() 
p2 = ggplot(Closed_Price_Return, aes(Date, R.TCS)) + geom_line(color = "green") + 
    theme_bw() 
p3 = ggplot(Closed_Price_Return, aes(Date, R.CIPLA)) + geom_line(color = "red") + 
    theme_bw() 
p4 = ggplot(Closed_Price_Return, aes(Date, R.EICHER)) + geom_line(color = "pink") + 
    theme_bw() 
p5 = ggplot(Closed_Price_Return, aes(Date, R.INFY)) + geom_line(color = "yellow") + 
    theme_bw() 
p6 = ggplot(Closed_Price_Return, aes(Date, R.LT)) + geom_line(color = "purple") + 
    theme_bw() 
p7 = ggplot(Closed_Price_Return, aes(Date, R.MARUTI)) + geom_line(color = "orange") + 
    theme_bw() 
p8 = ggplot(Closed_Price_Return, aes(Date, R.RELIANCE)) + geom_line(color = "#7fffd4") + 
    theme_bw() 
p9 = ggplot(Closed_Price_Return, aes(Date, R.SUNPHARMA)) + geom_line(color = "#ff1493") + 
    theme_bw() 
p10 = ggplot(Closed_Price_Return, aes(Date, R.YESBANK)) + geom_line(color = "#ff7256")+ 
    theme_bw() 

##------------Converting the ggplots into plotly objects-------## 
p1 = ggplotly(p1) 
p2 = ggplotly(p2) 
p3 = ggplotly(p3) 
p4 = ggplotly(p4) 
p5 = ggplotly(p5) 
p6 = ggplotly(p6) 
p7 = ggplotly(p7) 
p8 = ggplotly(p8) 
p9 = ggplotly(p9) 
p10 = ggplotly(p10) 

现在我想为所有这些图表的下拉菜单按钮。请 告诉我如何继续进行按钮的代码在plotly

回答

1

一种方式是(像plotly page的例子),创建plotly与您的所有痕迹无形的,然后添加切换可见痕迹下拉:

plot_ly(mtcars, x = ~gear) %>% 
    add_trace(y = ~cyl, name = "cyl", visible = F, color=I("blue")) %>% 
    add_trace(y = ~hp, name = "hp", visible = F, color=I("green")) %>% 
    add_trace(y = ~gear, name = "gears", visible = F, color=I("red")) %>% 
    layout(
    yaxis = list(title = "y"), 
    updatemenus = list(
     list(
     y = 0.7, 
     buttons = list(
      list(method = "restyle", 
       args = list("visible", list(TRUE, FALSE, FALSE)), 
       label = "cyl"), 
      list(method = "restyle", 
       args = list("visible", list(FALSE, TRUE, FALSE)), 
       label = "hp"), 
      list(method = "restyle", 
       args = list("visible", list(FALSE, FALSE, TRUE)), 
       label = "gear"))) 
    ) 
) 

对于您的情况,只需在add_trace中定义不同的y即可。只要您的下拉列表中包含痕迹,TRUE/FALSE列表就必须存在。

这也适用于非常简单的小应用程序光泽:

library(shiny) 
library(plotly) 

p1 <- plot_ly(mtcars, x=~cyl, y=~gear) 
p2 <- plot_ly(mtcars, x=~hp, y=~am) 

ui <-shinyUI(fluidPage(selectInput("selectPlot", "Choose desired plot", choices=paste0("p", 1:2)), plotlyOutput("plot"))) 

server <- shinyServer(function(input,output){  
    output$plot <- renderPlotly({ 
    return(get(input$selectPlot)) # get("p1") from the workspace returns the object p1, which is a plotly object 
    }) 
}) 

shinyApp(ui,server) 

enter image description here

+0

非常感谢您的帮助,我用第一种方法,它是很多更容易上手。 –