将 R 图导出为多种格式

  • 本文关键字:格式 r plot graphics
  • 更新时间 :
  • 英文 :


既然可以将R图导出为PDFPNGSVG等,那么是否可以一次将R图导出为多种格式? 例如,将绘图导出为 PDF PNG 和 SVG,而不重新计算绘图?

不使用ggplot2和其他软件包,这里有两个替代解决方案。

  1. 创建一个函数,使用指定的设备生成绘图并对其进行sapply

    # Create pseudo-data
    x <- 1:10
    y <- x + rnorm(10)
    # Create the function plotting with specified device
    plot_in_dev <- function(device) {
      do.call(
        device,
        args = list(paste("plot", device, sep = "."))  # You may change your filename
      )
      plot(x, y)  # Your plotting code here
      dev.off()
    }
    wanted_devices <- c("png", "pdf", "svg")
    sapply(wanted_devices, plot_in_dev)
    
  2. 使用内置函数dev.copy

    # With the same pseudo-data
    # Plot on the screen first
    plot(x, y)
    # Loop over all devices and copy the plot there
    for (device in wanted_devices) {
      dev.copy(
        eval(parse(text = device)),
        paste("plot", device, sep = ".")  # You may change your filename
      )
      dev.off()
    }
    

第二种方法可能有点棘手,因为它需要非标准评估。然而,它也是有效的。这两种方法都适用于其他绘图系统,包括ggplot2只需将绘图生成代码替换为上述plot(x, y) - 您可能需要显式print ggplot 对象。

是的,绝对! 这是代码:

library(ggplot2)
library(purrr)
data("cars")
p <- ggplot(cars, aes(speed, dist)) + geom_point()
prefix <- file.path(getwd(),'test.')
devices <- c('eps', 'ps', 'pdf', 'jpeg', 'tiff', 'png', 'bmp', 'svg', 'wmf')
walk(devices,
     ~ ggsave(filename = file.path(paste(prefix, .x)), device = .x))

相关内容

  • 没有找到相关文章

最新更新