微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Shiny Dashboard 中填充整个 tabItem 窗口

如何解决在 Shiny Dashboard 中填充整个 tabItem 窗口

我看过一些类似的问题,但没有其他解决方案。我试图让 Shiny Dashboard 中 tabItem 的 uIoUtput/htmlOutput 显示来自 netCoin 包的完整网络。对于我的生活,我无法弄清楚为什么这行不通。下面可重现的示例:


library(shinydashboard)
library(netCoin)

ui = dashboardPage(
  dashboardHeader(title = "Example"),dashboardSidebar(
    sidebarMenu(
      menuItem("Example",tabName = "example",icon = icon("user"))
    )
  ),dashboardBody(
    tabItems(
      tabItem(tabName = "example",fillPage(
                tags$style(type = "text/css","#fullpage {height: calc(100vh - 80px) !important;}"),uIoUtput("fullpage")
              )
      )
    )
  )
)

server = function(input,output) {
  output$fullpage = renderUI({
    frame <- data.frame(A = c("Man; Women","Women; Women","Man; Man","Undet.; Women; Man"))
    data <- dichotomize(frame,"A",sep = "; ")[2:4]
    C <- coin(data) # coincidence matrix
    N <- asNodes(C) # node data frame
    E <- edgeList(C) # edge data frame
    net = netCoin(N,E) # netCoin object
    shinyCoin(net)
  })
}

shinyApp(ui,server)

当前的输出看起来像这样,但我的目标是填满整个页面

enter image description here

解决方法

想通了。我必须修改位于 /Library/Frameworks/R.framework/Versions/4.0/Resources/library/netCoin/www 的 include.html netCoin 包文件夹中的 iframe 标记,并包含参数 height:100%。

现在是:

<iframe class="netcoin" style="border:none;overflow:hidden;width:100%;height:100%;min-height:400px;" src="index.html"></iframe>
<script type="text/javascript">
window.onload = function(){
  var iframe = document.querySelector('iframe.netcoin');
  iframe.style.height = iframe.offsetWidth/1.41 + "px";
}
</script>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。