R Shiny:本地运行应用程序与部署应用程序时导出的 PNG 分辨率不同

2024-01-17

我想在部署的 Shiny 应用程序中创建具有手动指定分辨率的 PNG 图像。此 PNG 图像应保存在我的 Dropbox 中。由于某种原因,我的 Shiny 应用程序的部署版本没有采用res内的论证png功能考虑在内。

考虑以下示例:

##### Load R packages #####


library("rdrop2")
library("shiny")
library("shinythemes")


##### Define UI #####


ui <- fluidPage(theme = shinytheme("cerulean"),
                
                path_now <<- tempdir(),

                mainPanel(tags$h1("My Input"),
                      
                          textInput("some_text", "Insert Some Text", "Some Text"),
                          textOutput("some_text_txtout"),
            
                          actionButton("do", "Run"),
                ))


##### Define server function #####


server <- function(input, output) {

  observeEvent(input$do, {

    fun_some_text <- reactive({
      input$some_text
    })

    some_text <<- fun_some_text()

    outfile <- tempfile(fileext = "my_identifier.png")

    png(outfile, 
        width = 1500,
        height = 1000,
        res = 10)

    par(mar = c(0, 0, 0, 0))
    par(bg = "green")

    N <- 5000
    x <- runif(N)
    y <- runif(N)

    plot(x, y, type = "l", xlim = c(0.1, 0.9), ylim = c(0.1, 0.9))

    points(0.5, 0.5, col = "green", cex = 1700, pch = 16)

    text(0.5, 0.575, some_text, cex = 50)

    dev.off()

    token <- readRDS("droptoken.rds")

    file_path <- file.path(path_now, list.files(path_now, pattern = "my_identifier")[1])
    file_path <- gsub("\\\\", "/", file_path)

    drop_upload(file_path,
                path = "responses",
                dtoken = token)
  })
}


##### Create Shiny object #####


shinyApp(ui = ui, server = server)

如果我在本地运行此应用程序,则会创建以下 PNG 图像:

然而,当我将完全相同的应用程序部署到shinyapps.io并在线运行它时,会创建以下PNG图像:

正如您所看到的,第二张图像的分辨率要大得多,即res = 10我在中指定的论点png应用程序的部署版本中未考虑该功能。

我是 Shiny 的新手,所以我认为我错过了一些非常基本的东西。然而,经过2天的研究,我仍然没有找到解决方案。

问题:如何在已部署的 Shiny 应用程序中指定 PNG 分辨率?


请使用以下命令检查 ragg 输出在您的系统和shinyapps.io 上是否保持相同:

##### Load R packages #####
library("shiny")
library("shinythemes")
library("ragg")

createPNG <- function(text_input, res, type){
  outfile <- tempfile(fileext = paste0("_", gsub(" ","_", gsub(":",".", Sys.time())), "_", type, ".png"))
  
  if(type == "ragg"){
    agg_png(outfile, width = 1500, height = 1000, res = res)
  } else {
    png(outfile, 
        width = 1500,
        height = 1000,
        res = res, type = type)
  }
  
  par(mar = c(0, 0, 0, 0))
  par(bg = "green")
  
  N <- 5000
  x <- runif(N)
  y <- runif(N)
  
  plot(x, y, type = "l", xlim = c(0.1, 0.9), ylim = c(0.1, 0.9))
  points(0.5, 0.5, col = "green", cex = 1700, pch = 16)
  text(0.5, 0.575, text_input, cex = 50)
  invisible(dev.off())
  outfile
}

##### Define UI #####
ui <- fluidPage(theme = shinytheme("cerulean"),
                path_now,
                mainPanel(tags$h1("My Input"),
                          textInput("some_text", "Insert Some Text", "Some Text"),
                          verbatimTextOutput("pngPaths"),
                          numericInput("resolution", "resolution", value = 10, min = 1, max = 20),
                          actionButton("do", "Run")
                ))


##### Define server function #####
server <- function(input, output, session) {
  
  pngPaths <- reactiveVal(NULL)
  
  observeEvent(input$do, {
    cairoPath <- createPNG(input$some_text, input$resolution, "cairo")
    windowsPath <- createPNG(input$some_text, input$resolution, "windows")
    raggPath <- createPNG(input$some_text, input$resolution, "ragg")
    
    pngPaths(list(cairoPath, windowsPath, raggPath))
    
    if(Sys.info()["sysname"] == "Windows"){
      shell.exec(dirname(cairoPath))
    }
  })
  
  output$pngPaths <- renderPrint(req(pngPaths()))
}


##### Create Shiny object #####
shinyApp(ui = ui, server = server)

Here https://stackoverflow.com/questions/58858687/consistent-size-for-symbols-in-ggsave-and-gganimates-animate/58950189#58950189可以找到相关帖子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R Shiny:本地运行应用程序与部署应用程序时导出的 PNG 分辨率不同 的相关文章

  • 调整图像的亮度、对比度和伽玛值

    在 NET 中调整图像的亮度 对比度和伽玛值的简单方法是什么 c and gdi have a simple way to control the colors that are drawn It s basically a ColorMa
  • 在 R 格子包中微调点图

    我正在尝试为不同的数据集和不同的算法绘制一堆 ROC 区域 我有三个变量 方案 指定所使用的算法 数据集 是正在测试算法的数据集 以及 Area under ROC 我正在 R 中使用lattice库 命令如下 点图 方案 Area und
  • Purrr::map_df() 删除 NULL 行

    使用时purrr map df 我偶尔会传递一个数据框列表 其中一些项目是NULL 当我做 map df 返回行数少于原始列表的数据框 我想发生的事情是这样的map df calls dplyr bind rows 它忽略了NULL价值观
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • react-native - 图像需要来自 JSON 的本地路径

    你好社区 我正在react native中开发一个测试应用程序 并尝试从本地存储位置获取图像 我实际在做什么 我将图像直接链接源提供给 var 并在渲染函数中调用此方法 react 0 14 8 react native 0 23 1 np
  • 如何获得所有大于x且有位置的数字?

    V lt c 1 3 2 4 2 3 1 X lt 3 pos lt V V X pos is 3 3 我需要的是所有 3 个的位置 I need 2 and 6 哪些职位是3 in V Use which pos lt which V 3
  • 在 Rcpp 中使用其他包中的 C 函数

    我试图从 C 函数中的 cubature 包调用 C 例程来执行多维积分 我试图重现的基本 R 示例是 library cubature integrand lt function x sin x adaptIntegrate integr
  • 如何在 R 或 Python 中制作旭日图?

    到目前为止 我一直无法找到一个可以创建旭日图的 R 库约翰 斯塔斯科 http www cc gatech edu gvu ii sunburst 有人知道如何在 R 或 Python 中实现这一点吗 在极坐标投影中使用 matplotli
  • 所有 x 轴标签未以 45 度显示

    I m having the code as like below But I m not getting all the x axis labels and it is not displaying in 45 degree when I
  • Java 旋转图像

    Override public void paintComponent Graphics g super paintComponent g Graphics2D g2 Graphics2D g create rotation of play
  • 将不均匀的层次列表转换为数据框

    我认为还没有有人问过这个问题 但是有没有一种方法可以将具有多个级别和不均匀结构的列表的信息组合成 长 格式的数据帧 具体来说 library XML library plyr xml inning lt http gd2 mlb com c
  • 在 Excel 中使用 VBA 设置图像透明度

    有没有办法使用 VBA 脚本对图像应用一些透明度 我录制了一个 宏 但似乎没有录制艺术效果 我已经找到了如何制作形状 但没有找到图像 这需要几个步骤 将自选图形 如矩形 放置在工作表上 使用以下方法将您的实际图片嵌入矩形中 ShapeRan
  • 如何从 R 读取 PDF 元数据

    我们很好奇 有没有一种方法可以从 R 读取 PDF 元数据 例如下面显示的信息 通过搜索我对此无能为力 r pdf metadata在当前的问题库中 非常欢迎任何指点 我想不出纯 R 的方法来执行此操作 但您可能可以安装您最喜欢的 PDF
  • 如何使用 SparkR 1.6.0 写入 JDBC 源?

    使用 SparkR 1 6 0 我可以使用以下代码从 JDBC 源读取数据 jdbc url lt jdbc mysql localhost 3306 dashboard user
  • 以编程方式将字符串宽度值插入到 sprintf() 中

    我正在尝试以编程方式将字符串宽度值插入到sprintf 格式 期望的结果是 sprintf 20s hello 1 hello 但我想插入20在同一通话中即时进行 因此它可以是任何号码 我努力了 sprintf ds 20 hello 1
  • R:使用 tidyverse 将 NA 替换为 df 中的其他变量

    我想使用 tidyverse 替换 df 中的 NA 值 我想要的值应该从其他列中计算出来 input ID X1 X2 X3 A 0 96 NA 0 97 B 1 00 NA 1 01 C 0 98 0 03 NA A 1 00 NA 1
  • Shiny:动态数据框构建; renderUI、观察、reactiveValues

    我认为如何使用 Shiny 的 renderUI 功能动态子集数据的问题经常出现 但我很难理解何时使用 renderUI 带有 uiOutput 而不是其他功能 包括观察 反应 反应值甚至条件面板 我想构建一个完全交互式的数据框架 其中每个
  • 在 ifelse() 语句内部和外部运行一行时的不同输出

    我正在尝试运行一个简单的命令 但不知道为什么在内部和外部运行它时输出不同ifelse 功能 函数条件评估为FALSE 所以输出应该完全相同 但是 单独运行时 输出为0 0 1 1 0 1 0 1 NA 根据需要 但是从ifelse 函数 输
  • 线性判别分析图

    如何将样本 ID 行号 作为标签添加到此 LDA 图中的每个点 library MASS ldaobject lt lda Species data iris plot ldaobject panel function x y points
  • 如何使用 dplyr 独立过滤每列的行

    我有以下内容 library tidyverse df lt tibble tribble gene colB colC a 1 2 b 2 3 c 3 4 d 1 1 df gt A tibble 4 x 3 gt gene colB c

随机推荐