gpt4 book ai didi

r - 是否可以使用 Cairo 图形设备使用 ggsave 创建 .eps 文件?

转载 作者:行者123 更新时间:2023-12-03 14:39:31 31 4
gpt4 key购买 nike

编辑:此页面提供代码:https://www.andrewheiss.com/blog/2017/09/27/working-with-r-cairo-graphics-custom-fonts-and-ggplot/

ggsave("test_cario.eps", device=cairo_ps)

ggsave("test_cario.pdf", device=cairo_pdf)

但是,我想知道命令来自哪里。它们不包含在官方文档 ( https://ggplot2.tidyverse.org/reference/ggsave.html) 的可能设备列表中。而且,cairo_png 不存在;相反, type="cairo-png"是必要的,例如:
ggsave("test_cairo.png", type = "cairo-png")

有谁知道为什么争论是一次 device = ""还有一次 type = "" ?

我试过像这样的代码
ggsave("model.eps", type = "cairo")

或者
ggsave("model.eps", type = "cairo-ps")
或者
ggsave("model.eps", device = "cairo-ps")
但似乎没有任何效果。一般来说,是否可以使用 Cairo 图形设备使用 ggsave 创建 .eps 文件?如果是这样,怎么做?

最佳答案

您需要查看以了解差异的代码位于名为 plot_dev 的非导出函数中。在 ggplot 命名空间中。您可以通过查看 ggsave 代码来获取此信息。调度到设备的线路是:

dev <- plot_dev(device, filename, dpi = dpi)
# Look at that function
getAnywhere(plot_dev) # not exported, so need getAnywhere
plot_dev的逻辑是首先检查“设备”值是否作为函数名给出,如果是,则调用该函数。这就是您提供的前两个电话中发生的情况。如果它不是一个函数并且没有给出“设备”的字符值(这是您第三次调用中的情况),那么 plot_dev 根据作为“文件名”提供的文件名的扩展名从一个命名的函数列表中分派(dispatch)。类型参数被传递给 png获取 png 的“cairo”版本的函数使用而不是默认值。

这是可能的设备及其默认参数的列表。可以为这些默认值提供替代值,并且“点”可用于指定其他设备参数。 (有关详细信息,请参阅各自的帮助页面):
devices <- list(eps = eps, 
ps = eps,
tex = function(filename, ...)
grDevices::pictex(file = filename, ...),
pdf = function(filename, ..., version = "1.4")
grDevices::pdf(file = filename, ..., version = version),
svg = function(filename, ...) vglite::svglite(file = filename, ...),
emf = function(...) grDevices::win.metafile(...),
wmf = function(...) grDevices::win.metafile(...),
png = function(...) grDevices::png(..., res = dpi,
units = "in"),
jpg = function(...) grDevices::jpeg(..., res = dpi,
units = "in"),
jpeg = function(...) grDevices::jpeg(..., res = dpi,
units = "in"),
bmp = function(...) grDevices::bmp(..., res = dpi,
units = "in"),
tiff = function(...) grDevices::tiff(..., res = dpi,
units = "in"))

请注意,前两个参数的值是 eps .这是一个内部定义的函数:
eps <- function(filename, ...) {
grDevices::postscript(file = filename, ..., onefile = FALSE,
horizontal = FALSE, paper = "special")

关于r - 是否可以使用 Cairo 图形设备使用 ggsave 创建 .eps 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48567385/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com