首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么dev.new()打开RStudioGD-和png设备?

为什么dev.new()打开RStudioGD-和png设备?
EN

Stack Overflow用户
提问于 2021-10-15 15:40:19
回答 1查看 116关注 0票数 1

我需要了解“设备是如何工作的”,并遵循great answer here和expected dev.new()只是创建了一个新的默认设备。但这并不会发生:

代码语言:javascript
运行
复制
getOption("device")
# [1] "RStudioGD"
dev.list()
# NULL
dev.cur()
# null device 
# 1 
dev.new()
# NULL
dev.list()
# RStudioGD       png ?? why also png ??
# 2         3 
dev.cur()
# RStudioGD 
# 2 

这种行为是故意的吗?我猜不是--为什么它要选择png呢?(我以前尝试过设备和png(),但没有发现默认参数发生了变化。

在第一个答案之后,我也尝试了dev.new()和RGui (Windows,x64)。还有另一种行为:

代码语言:javascript
运行
复制
> dev.new()
# opens a graphics window
> dev.list()
# windows 
#   2 
> getOption("device") # Just the function?
function (width, height, pointsize, record, rescale, xpinch, 
    ypinch, bg, canvas, gamma, xpos, ypos, buffered, title, restoreConsole, 
    clickToConfirm, fillOddEven, family = "", antialias) 
{
    check <- Sys.getenv("_R_CHECK_SCREEN_DEVICE_", "")
    msg <- "screen devices should not be used in examples etc"
    if (identical(check, "stop")) 
        stop(msg, domain = NA)
    else if (identical(check, "warn")) 
        warning(msg, immediate. = TRUE, noBreaks. = TRUE, domain = NA)
    new <- list()
    if (!missing(width)) 
        new$width <- as.double(width)
    if (!missing(height)) 
        new$height <- as.double(height)
    if (!missing(pointsize)) 
        new$pointsize <- as.double(pointsize)
    if (!missing(record)) 
        new$record <- record
    if (!missing(rescale)) 
        new$rescale <- rescale
    if (!missing(xpinch)) 
        new$xpinch <- as.double(xpinch)
    if (!missing(ypinch)) 
        new$ypinch <- as.double(ypinch)
    if (!missing(bg)) 
        new$bg <- bg
    if (!missing(canvas)) 
        new$canvas <- canvas
    if (!missing(gamma)) 
        new$gamma <- gamma
    if (!missing(xpos)) 
        new$xpos <- as.integer(xpos)
    if (!missing(ypos)) 
        new$ypos <- as.integer(ypos)
    if (!missing(buffered)) 
        new$buffered <- buffered
    if (!missing(title)) 
        new$title <- title
    if (!missing(restoreConsole)) 
        new$restoreConsole <- restoreConsole
    if (!missing(clickToConfirm)) 
        new$clickToConfirm <- clickToConfirm
    if (!missing(fillOddEven)) 
        new$fillOddEven <- fillOddEven
    if (!missing(antialias)) 
        new$antialias <- match.arg(antialias, aa.win)
    d <- check.options(new = new, envir = .WindowsEnv, name.opt = ".Windows.Options", 
        reset = FALSE, assign.opt = FALSE)
    rescale <- match(d$rescale, c("R", "fit", "fixed"))
    if (is.na(rescale)) 
        stop("invalid value for 'rescale'")
    antialias <- pmatch(d$antialias, aa.win)
    invisible(.External(C_devga, "", d$width, d$height, 
        d$pointsize, d$record, rescale, d$xpinch, d$ypinch, d$canvas, 
        d$gamma, d$xpos, d$ypos, d$buffered, .PSenv, d$bg, d$restoreConsole, 
        d$title, d$clickToConfirm, d$fillOddEven, family, antialias))
}
<bytecode: 0x0000000015978308>
<environment: namespace:grDevices>
EN

回答 1

Stack Overflow用户

发布于 2021-10-17 19:42:47

dev.***简介

默认情况下,在dev.new之后,我们在Windows中有两个图形设备

代码语言:javascript
运行
复制
dev.list()
NULL
dev.cur()
null device 
          1 
dev.new()
NULL
dev.list()
RStudioGD       png 
        2         3 

我们还可以添加哪些图形设备:

a)弹出窗口( MacOS上的__"quartz"、Linux上的"X11"。);

代码语言:javascript
运行
复制
windows()
dev.list()
RStudioGD       png   windows 
        2         3         4  

b) pdf;

代码语言:javascript
运行
复制
pdf()
dev.list()
RStudioGD       png       pdf 
        2         3         4 

c) png、svg、tiff、jpeg。

代码语言:javascript
运行
复制
png()
svg()
tiff()
jpeg()
dev.list()
RStudioGD       png       pdf       png       svg      tiff      jpeg 
        2         3         4         5         6         7         8 

要生成图形输出,请执行以下操作:

代码语言:javascript
运行
复制
dev.set(5)
png 
  5 
  ggplot(data = mpg) + 
      geom_point(mapping = aes(x = displ, y = hwy))
dev.off()

在此之后,将生成一个包含我们的绘图的文件,但是"png“图形输出将从我们的dev.list中消失

代码语言:javascript
运行
复制
dev.list()
pdf  svg tiff 
  4    6    7    

我们可以使用dev.next() and dev.prev()在图形设备之间移动

要关闭所有图形设备,我们使用graphics.off()

代码语言:javascript
运行
复制
graphics.off()
dev.list()
NULL
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69587289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档