最简单的方法是在调用image()
with时抑制轴,axes = FALSE
然后自己添加它们。例如:
set.seed(42)
X <- as.POSIXct(1:100, origin = "1970-1-1")
Z <- matrix(rnorm(100*100), 100)
image(x = X, z = Z, axes = FALSE)
axis(side = 2)
axis.POSIXct(side = 1, x = X)
box()
这也可以使用Axis()
S3 泛型来完成:
image(x = X, z = Z, axes = FALSE)
axis(side = 2)
Axis(x = X, side = 1)
box()
因此,要真正尝试回答问题,我会将其包装到一个自动执行各个步骤的函数中:
Image <- function(x = seq(0, 1, length.out = nrow(z)),
y = seq(0, 1, length.out = ncol(z)),
z, ...) {
image(x = X, z = Z, ..., axes = FALSE)
Axis(x = y, side = 2, ...)
Axis(x = X, side = 1, ...)
box()
}
将您的轴函数编写为Axis()
泛型和类的 S3 方法,x
并y
适当地调用您的方法,并且上述方法应该可以正常工作。您需要记住的只是更改image()
为Image()
.
您也可以编写自己的image()
方法,并添加您的类以x
调用它而不是取决于拥有一个类image.default()
是否有意义?x
我这样做的原因是,更改image.default()
R 范围的唯一方法是编辑函数并将其分配给图形命名空间或获取您的版本并显式调用它。每次启动 R 时都需要执行此操作。自定义函数可以轻松获取或添加到您自己的本地 misc 函数包中,您可以在 R 启动时安排加载这些函数,以便它自动可用。请参阅?Startup
有关如何安排的详细信息。