如何在R GUI中看到svg图形弹出

如何在R GUI中看到svg图形弹出,r,ggplot2,plot,rgui,rsvg,R,Ggplot2,Plot,Rgui,Rsvg,我尝试了各种组合的情节和打印字符串,但徒劳无功。任何可以在带有R GUI控制台的弹出窗口中呈现SVG的建议?您至少有两个选项可以实现这一点: 创建一个新的绘图,读入图像文件,然后在绘图上绘制。这将显示在图像设备上,例如x11、pdf、Rstudio图像查看器窗格(“绘图”)等,具体取决于您使用的应用程序;请参见下面的f 生成html文件以链接到图像文件。然后可以在默认浏览器或Rstuio查看器窗格(“查看器”)中打开,具体取决于您使用的浏览器;参见下面的g library('rsvg'))

我尝试了各种组合的情节和打印字符串,但徒劳无功。任何可以在带有R GUI控制台的弹出窗口中呈现SVG的建议?

您至少有两个选项可以实现这一点:

  • 创建一个新的绘图,读入图像文件,然后在绘图上绘制。这将显示在图像设备上,例如x11、pdf、Rstudio图像查看器窗格(“绘图”)等,具体取决于您使用的应用程序;请参见下面的
    f

  • 生成html文件以链接到图像文件。然后可以在默认浏览器或Rstuio查看器窗格(“查看器”)中打开,具体取决于您使用的浏览器;参见下面的
    g


  • library('rsvg'))
    
    是的,它真的很接近我想要的。我使用的不是Rstudio,而是R GUI(windows和OSX中的控制台)。如何使用console实现同样的效果?@DeathMetal我已经有一段时间没有使用r gui了,我不确定它是否有查看html页面的窗口,如果不使用rstudio,该代码应该在默认浏览器中打开。我认为您提到的窗口只是用于绘图的窗口(这是rstudio中的一个单独窗格),您需要查看如何在现有绘图上插入特定的图像格式。例如,由于您创建了一个png,您可以使用
    img或者
    img,非常感谢<代码>光栅图像(img,0,0,1,1)
    在R GUI上工作,这就是我想要的。我没有试过前面的那个。非常感谢您的回复和时间。如果您可以在最初的帖子中添加
    png::
    代码行进行更改,我将接受答案:)
    library(rsvg)
    
    
    str <- charToRaw('<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
      <style>
        circle {
          fill: gold;
          stroke: maroon;
          stroke-width: 10px;
        }
      </style>
    
      <circle cx="150" cy="150" r="100" />
    </svg>')
    
    rsvg_png(str, file = 'ex1.png') # repeat. I want to remove the save but render on GUI
    
    plot.new()
    str
    dev.off()
    
    library('rsvg')
    str <- charToRaw('<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg">
      <style>
        circle {
          fill: gold;
          stroke: maroon;
          stroke-width: 10px;
        }
      </style>
    
      <circle cx="150" cy="150" r="100" />
    </svg>')
    
    rsvg_png(str, file = '~/desktop/ex1.png')
    
    ## open in the R/RGui/Rstudio image viewer
    f('~/desktop/ex1.png')
    
    ## open in Rstudio viewer or browser in R/Rgui
    g('~/desktop/ex1.png')
    
    ## image viewer
    f <- function(img) {
      img <- png::readPNG(img)
      plot.new()
      plot.window(0:1, 0:1, asp = 1)
      rasterImage(img, 0, 0, 1, 1)
    }
    
    ## html viewer/browser
    g <- function(img, use_viewer = TRUE) {
      file.copy(img, tempdir(), overwrite = TRUE)
      tmp <- tempfile(fileext = '.html')
      writeLines(sprintf('<img src="%s">', basename(img)), con = tmp)
      
      if (use_viewer)
        tryCatch(
          rstudioapi::viewer(tmp),
          error = function(e) browseURL(tmp)
        )
      else browseURL(tmp)
    }