为什么 dev.new() 打开 RStudioGD- 和 png 设备?
Why does dev.new() open RStudioGD- and png device?
我需要了解“设备的工作原理”并遵循 great answer here 并且预计 dev.new()
只会创建一个新的默认设备。但这不会发生:
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)。还有一种行为:
> 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>
dev.***
简介
在 Windows
默认情况下,我们在 dev.new
之后有两个图形设备
dev.list()
NULL
dev.cur()
null device
1
dev.new()
NULL
dev.list()
RStudioGD png
2 3
我们还可以添加哪些图形设备:
a) 弹出窗口 window(MacOS 上 "quartz"
,Linux 上 "X11"
。);
windows()
dev.list()
RStudioGD png windows
2 3 4
b) pdf;
pdf()
dev.list()
RStudioGD png pdf
2 3 4
c) png, svg, tiff, jpeg.
png()
svg()
tiff()
jpeg()
dev.list()
RStudioGD png pdf png svg tiff jpeg
2 3 4 5 6 7 8
要进行图形输出:
dev.set(5)
png
5
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy))
dev.off()
在此之后生成了一个包含我们绘图的文件,但是“png”图形输出从我们的 dev.list
中消失了
dev.list()
pdf svg tiff
4 6 7
我们可以使用 dev.next() and dev.prev()
在图形设备之间移动
要关闭我们使用的所有图形设备graphics.off()
graphics.off()
dev.list()
NULL
我需要了解“设备的工作原理”并遵循 great answer here 并且预计 dev.new()
只会创建一个新的默认设备。但这不会发生:
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)。还有一种行为:
> 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>
dev.***
在 Windows
默认情况下,我们在 dev.new
dev.list()
NULL
dev.cur()
null device
1
dev.new()
NULL
dev.list()
RStudioGD png
2 3
我们还可以添加哪些图形设备:
a) 弹出窗口 window(MacOS 上 "quartz"
,Linux 上 "X11"
。);
windows()
dev.list()
RStudioGD png windows
2 3 4
b) pdf;
pdf()
dev.list()
RStudioGD png pdf
2 3 4
c) png, svg, tiff, jpeg.
png()
svg()
tiff()
jpeg()
dev.list()
RStudioGD png pdf png svg tiff jpeg
2 3 4 5 6 7 8
要进行图形输出:
dev.set(5)
png
5
ggplot(data = mpg) +
geom_point(mapping = aes(x = displ, y = hwy))
dev.off()
在此之后生成了一个包含我们绘图的文件,但是“png”图形输出从我们的 dev.list
dev.list()
pdf svg tiff
4 6 7
我们可以使用 dev.next() and dev.prev()
要关闭我们使用的所有图形设备graphics.off()
graphics.off()
dev.list()
NULL