相同的代码在R和R studio中的工作方式不同

问题描述 投票:2回答:1

当我学习如何使用网格绘图时,R studio显示结果与书中的示例不同。所以我在R中运行相同的代码,并得到相同的结果到书中的一个例子。我不知道这个原因......

下面是代码。

library(grid)
grid.newpage()
pushViewport(plotViewport(c(5, 4, 2, 2)))
pushViewport(dataViewport(pressure$temperature,pressure$pressure,name="plotRegion"))
grid.points(pressure$temperature, pressure$pressure,name="dataSymbols")
grid.rect()
grid.xaxis()
grid.yaxis()
grid.text("temperature", y=unit(-3, "lines"))
grid.text("pressure", x=unit(-3, "lines"), rot=90)
grid.edit("dataSymbols", pch=2)
upViewport(2)
grid.rect(gp=gpar(lty="dashed"))
downViewport("plotRegion")
grid.text("Pressure (mm Hg)\nversus\nTemperature (Celsius)",x=unit(150, "native"), y=unit(600, "native"))

P工作室

[R

r r-grid
1个回答
3
投票

此代码使用gpar中定义的默认值。帮助说:

默认参数设置由ROOT视口定义,ROOT视口从图形设备获取其设置。这些默认值可能因设备而异(例如,与PDF设备相比,PNG设备的默认填充设置不同)。

使用RStudio:

get.gpar()$fill
#[1] "white"

随着RGui:

get.gpar()$fill
#[1] "transparent"

因此,RStudio设备具有不同的设置。您需要明确指定您不希望填充矩形。

library(grid)
grid.newpage()
pushViewport(plotViewport(c(5, 4, 2, 2)))
pushViewport(dataViewport(pressure$temperature,pressure$pressure,name="plotRegion"))
grid.points(pressure$temperature, pressure$pressure,name="dataSymbols")
grid.rect(gp = gpar(fill = NA))
grid.xaxis()
grid.yaxis()
grid.text("temperature", y=unit(-3, "lines"))
grid.text("pressure", x=unit(-3, "lines"), rot=90)
grid.edit("dataSymbols", pch=2)
upViewport(2)
grid.rect(gp=gpar(lty="dashed", fill = NA))
downViewport("plotRegion")
grid.text("Pressure (mm Hg)\nversus\nTemperature (Celsius)",x=unit(150, "native"), y=unit(600, "native"))

resulting plot

© www.soinside.com 2019 - 2024. All rights reserved.