4

我想知道是否有一种简单的方法可以只为绘图区域着色?我相信该par()$bg设置定义了整个设备背景的颜色,因此我一直在应用低级绘图命令polygon将彩色矩形添加到整个绘图区域。

例子

#colored device background
x11()
par(bg="grey90")
plot(x=1, y=2)
grid(col="white", lty=1)
points(x=1, y=2)

#colored plot area only
x11()
plot(x=1, y=2)
usr <- par()$usr
polygon(x=c(usr[1], usr[1], usr[2], usr[2]), y=c(usr[3], usr[4], usr[4], usr[3]), col="grey90")
grid(col="white", lty=1)
points(x=1, y=2)

这可能是执行此操作的唯一方法,但如果par设置中有更直接的方法,我很想知道。提前感谢您的任何建议。

4

1 回答 1

7

我很确定没有任何标准的论点可以单独做你想做的事。

不过,这是一种比您的方法更简单的方法。它使用plot.default()'panel.first参数在背景中绘制一个以原点为中心的巨大填充点。该点的范围至少是每个方向的 googol 立方单位,我已经确认这适用于 R 的本机 Windows 绘图设备,以及 pdf 和 png 设备:它似乎是一个非常通用的解决方案。

## Your example
plot(x=1, y=2, 
     panel.first={points(0, 0, pch=16, cex=1e6, col="grey90")
                  grid(col="white", lty=1)})

## Or, for repeated use, make it a function:
ggbg <- function() {
    points(0, 0, pch=16, cex=1e6, col="grey90")
    grid(col="white", lty=1)
}
plot(x=1, y=2, panel.first=ggbg())

在此处输入图像描述

## Also works for plots running out to 1e300 in each direction
plot(x=-1e300, y=1e300, panel.first=ggbg())
于 2013-05-20T06:25:57.090 回答