【问题标题】:Including an image in a shiny app package在闪亮的应用程序包中包含图像
【发布时间】:2016-12-12 00:13:54
【问题描述】:

如果您想在普通的闪亮应用中包含图像,您可以调用

shiny::img(src = "imgName.png")

在您的 ui 函数中具有以下目录结构:

| shinyApp/
    | ui.R
    | server.R
| www/
    | myImage.png

如何在同样是 r 包的闪亮应用中复制它?我试图做的一切都完全相同,但使用以下目录结构,但没有运气:

| packageName/
    | R
        | app.R # contains ui.R and server.R
    | inst
        | www
            | imgName.png

对于它的价值,在我的例子中,这个包实际上是捆绑了一个闪亮的模块,但我认为这与这个问题无关。

编辑:Minimal example 演示我的问题,使用 this package

【问题讨论】:

  • 我自己从来没有做过,但this answer help
  • 这是普通应用程序的方式(我在问题中描述的第一种方式),但它在包中时不起作用。

标签: r shiny


【解决方案1】:

使用addResourcePath 添加一个对 Shiny 网络服务器可见的目录。

如文档http://shiny.rstudio.com/reference/shiny/latest/addResourcePath.html中所述

使用给定的路径前缀将静态资源目录添加到 Shiny 的 Web 服务器。主要用于包作者,以使其组件可以使用支持的 JavaScript/CSS 文件。

它应该允许您引用包中的任何文件。

【讨论】:

    【解决方案2】:

    可以在 Divad Nojnarg 的“CaPO4 sim”中找到一个工作示例,如 issue I raised 中所述,关于在 shinydashboardPlus 用户描述中引用本地图标文件。

    总之,引用本地图像文件的一种方法是在R/ 目录中添加一个zzz.R 文件。

    .onAttach <- function(libname, pkgname) {
      shiny::addResourcePath('www',
                             system.file('www',
                                          package = 'DailyMeasure'))
    }
    

    其中包名是 DailyMeasure

    图片文件在inst/www/imgname.png

    该文件在 Shiny 的服务器部分中被引用,如下所示...

    output$user <- shinydashboardPlus::renderUser({
      shinydashboardPlus::dashboardUser(
        name = UserConfig()$Fullname[UserConfig()$AuthIdentity == Sys.info()[["user"]]],
        src = 'www/imgname.png', # this depends on addResourcePath in zzz.R
        subtitle = Sys.info()[["user"]], ... )})
    

    【讨论】:

      【解决方案3】:

      您有不止一种选择。最简单的方法是将png文件放在inst文件夹中,然后用system.file("imgName.png",package="yourPackage")访问它

      如果您将代码更改为shiny::img(src="www/imgName.png"),您的方法可能会奏效,但我不确定。

      【讨论】:

      • 对于我的包dtphase1flowchart.pnginst 文件夹中,这不起作用:shiny::img(src = system.file("flowchart.png", package="dtphase1"))。这不是你的意思吗?
      • 你的库中安装了这个包吗?
      • 是的。使用devtools::install_github("tbadams45/dtphase1") 安装了最新版本。包本身工作正常。这只是图像的问题。
      • 在调试应用程序之前,如果您从 R 控制台输入 system.file("flowchart.png",package="dtphase1")) 会发生什么?是否给出图像的路径?
      • 是的,“/home/tbadams45/R/x86_64-pc-linux-gnu-library/3.3/dtphase1/flowchart.png”。文件肯定在那里。当我运行应用程序时,Shiny 只是找不到它。
      猜你喜欢
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 2014-03-26
      • 2018-02-21
      • 2018-11-09
      相关资源
      最近更新 更多