与shinydashboard整合

Phi*_*ppe 4 r shiny shinydashboard

我已经使用了闪亮的几个小规模的项目,我现在尝试shinydashboard包看起来很有希望.我还希望使用plotly集成交互式绘图(尽管将来可以考虑其他库).

运行在flash(示例)中集成plot的示例没有问题,但在尝试使用shinydashboard实现类似结果时遇到问题.

例如,下面的代码(app.R)无法正常工作.

library(shiny)
library(shinydashboard)
library(plotly)
library(ggplot2)




data(movies, package = "ggplot2")
minx <- min(movies$rating)
maxx <- max(movies$rating)


#######
####### UI
#######

ui <- dashboardPage(

  ############# Header
  dashboardHeader(title = "Test"),

  ############# Sidebar
  dashboardSidebar(
    sidebarMenu(
      menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard"))
    )
  ),


  ############# Dashboard body
  dashboardBody(
    # Boxes need to be put in a row (or column)
    fluidRow(
      box(plotOutput("plot1"), width=6, height=500),
      box(plotOutput("plot2"), width=6, height=500)
    )
  )
)


#######
####### Server
#######


server <- function(input, output, session) {



  output$plot1 <- renderPlot({


    # a simple histogram of movie ratings
    p <- plot_ly(movies, x = rating, autobinx = F, type = "histogram",
                 xbins = list(start = minx, end = maxx, size = 2))
    # style the xaxis
    layout(p, xaxis = list(title = "Ratings", range = c(minx, maxx), autorange = F,
                           autotick = F, tick0 = minx, dtick = 2))

  })

  output$plot2 <- renderPlot({


    hist(movies$rating, col="blue")

  })
}


shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

页面应该显示两个相似的图:一个用plotly生成,另一个用R base生成.第二个显示正确但情节显示在Rstudio查看器面板中.如果我使用runApp()函数在终端上运行App,则会为仪表板打开一个网页,而另一个仅用于绘制交互式绘图的网页.

我试图创建一些反应图(一些闪亮控件(如滑动条)内容功能的图表更改)并且在查看器中打开的图或另一个浏览器窗口/选项卡已更新.所以一切似乎都有效,唯一的问题是情节图没有插入仪表板,而是插在不同的位置(查看器或其他标签),这当然是一个问题.

尽管我的研究,我找不到问题的解决方案(甚至人们提到它......).任何线索?

dic*_*koa 9

仔细检查教程,我认为你需要更换 ui

  box(plotOutput("plot1"), width=6, height=500)
Run Code Online (Sandbox Code Playgroud)

通过

  box(plotlyOutput("plot1"), width=6, height=500)
Run Code Online (Sandbox Code Playgroud)

而在server刚刚取代

output$plot1 <- renderPlot({
......
Run Code Online (Sandbox Code Playgroud)

通过

output$plot1 <- renderPlotly({
....
Run Code Online (Sandbox Code Playgroud)