为什么R的基本情节功能会这样做?我们必须使用points
或lines
,这需要使用特殊代码而不是type
参数。
plot(1:10)
plot(10:1, add = TRUE)
Warning messages:
1: In plot.window(...) : "add" is not a graphical parameter
2: In plot.xy(xy, type, ...) : "add" is not a graphical parameter
3: In axis(side = side, at = at, labels = labels, ...) :
等。
许多软件包提供了(即“覆盖”)绘图的方法,并且只要obj
属于适当的类,就可以提供明显的绘图能力(obj,add = TRUE)。 (例如sp
,raster
,spatstat
。)
是否有plot.default
尚未出现的原因?
编辑:这在这里详细讨论:
http://tolstoy.newcastle.edu.au/R/e4/devel/08/03/0725.html
DM在此有效地回答:http://tolstoy.newcastle.edu.au/R/e4/devel/08/03/0734.html
答案 0 :(得分:14)
因为plot.default
没有add
参数
> args(plot.default)
function (x, y = NULL, type = "p", xlim = NULL, ylim = NULL,
log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL,
ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL,
panel.last = NULL, asp = NA, ...)
NULL
那些其他功能不覆盖plot
但是提供了自己的方法,它们的参数add
因为它们被写成了办法。就个人而言,在使用points()
和lines()
等成长过程中,我发现他们没有太多额外的工作,我会优先使用plot
方法add
虽然我们已经在我所贡献的软件包中编写了两种方法。
为什么plot.default
没有add
参数?你必须问R Core,但我可以提出一些理由
plot.default
旨在在设备上生成整个图表points()
和lines()
等,为什么要重复?plot.default
是更简单的代码,没有代码来处理add
答案 1 :(得分:11)
如果未提供add=TRUE
(并且您使用的是基本图形),则在绘图调用之前使用par(new=TRUE)
。您将需要抑制可能干扰或覆盖现有注释的xlab,ylab和其他内容,并且我确实保持ylab不动以说明为什么需要该警告。 您还需要将xlim和ylim设置为相同。
plot(1:10);par(new=TRUE)
plot(10:1)
在审核了评论之后,我的投票是@ John的观点,即新的plot
- 调用可能会有一组不同的xlim和ylim,更不用说覆盖边距中所有文本对象的可能性了。 。 points
和lines
无法重新计算绘图区域的限制,因此它们可以“安全”地与plot.default
一起使用。