首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为绘图图表生成下拉菜单

为绘图图表生成下拉菜单
EN

Stack Overflow用户
提问于 2017-07-22 22:24:49
回答 1查看 3.1K关注 0票数 0

这是我对10只股票波动性的代码:

代码语言:javascript
复制
   ##------------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中的按钮代码

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-22 23:11:42

一种方法是(就像plotly page上的例子一样),创建所有跟踪不可见的plotly,然后添加一个切换可见跟踪的下拉列表:

代码语言:javascript
复制
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列表的长度必须与您的下拉列表中的轨迹相同。

这对于一个闪亮的小应用来说也是非常简单的:

代码语言:javascript
复制
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)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45255613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档