我似乎无法使用png()
使bmp()
,ggplot
等工作,而ggsave(filename="clipboard")
什么都不做。
有什么想法吗?
答案 0 :(得分:1)
试试这个:
dev.new()
my_plot <- ggplot(data.frame(x=1:10,y=1:10),aes(x,y)) + geom_point()
my_plot
savePlot("clipboard")
或者,如果您不想显示它
win.metafile()
my_plot2 <- ggplot(data.frame(x=1:5,y=1:5),aes(x,y)) + geom_point()
print(my_plot2)
dev.off()
答案 1 :(得分:0)
猜测,您是否尝试在函数,循环或外部文件中使用ggsave()?
这是一个常见的speedbump,只需简单的修复。您需要明确print
该文件。
而不是:
makeplot <- function(){
p <- gpplot(....some plotting....)
p
ggsave("foo.bmp") #or other function to save an image
}
你需要:
makeplot <- function(){
p <- gpplot(....some plotting....)
print(p )
ggsave("foo.bmp") #or other function to save an image
}
答案 2 :(得分:0)
我认为目标只是将情节放入剪贴板。我编写了一个函数来将绘图写入临时文件。由于 OP 显然是在 macOS 上,我和我一样,此功能目前仅适用于 macOS。根据需要进行调整。
plot_clipboard <- function(plot, width = 7, height = 6, device_fn = cairo_pdf) {
# determine required file extension based on input for device_fn
file_type <- deparse(substitute(device_fn))
file_type <- gsub(".*(.{3})$", "\\1", file_type)
tmpfile <- tempfile(fileext = paste0(".", file_type))
# save plot to temp file
device_fn(filename = tmpfile, width = width, height = height)
print(plot)
dev.off()
message("Saved plot to temp file: ", tmpfile)
# and copy this file into the clipboard
sysname <- tolower(Sys.info()["sysname"])
if (sysname == "darwin") {
# macOS, make use of Applescript
out <- system(command = paste0("osascript -e 'on run args' -e 'set the clipboard to POSIX file (first item of args)' -e end \"$@\"", tmpfile), intern = TRUE)
# } else if (sysname == "windows") {
# # something for Windows here
} else {
message("Sorry, you're on your own!")
}
}
它仍然在进行中。在 Finder 中粘贴工作正常,但粘贴到 Word 文档中则不行(而 Word 正确地表示将要粘贴“文件”对象)。
对于撰写科学手稿,我仍在寻找一种功能,该功能可以编写可立即粘贴到 Word 中的 PDF 文件(因此不会造成质量损失),从而使我只需执行以下操作即可从 R 转到 Word:>
analysis.1.2.3 <- my_research_data %>%
ggplot() +
geom_col() +
younameit()
analysis.1.2.3 %>% plot_clipboard()
然后在 Word 中使用 Cmd+V。正如我所说,正在进行中:)