Вы можете поиграть (в некоторой степени) с размером и расположением легенды, используя аргумент smallplot
функции.
В вашем примере вы можете использовать следующий код:
library(fields)
x <- seq(0, 1, 0.1)
y <- x
n <- length(x)
z <- matrix(runif(n^2), n, n)
xyzlist <- list(x, y, z)
yaxis2 <- y^2
### code added: left, right, bottom, top
image.plot(x,y,z, smallplot = c(.89, .94, .2, .8))
axis(4, at = y, labels = yaxis2)
Это дает следующий график:
Конечно, вы можете изменить легенду дальше, сделать ее меньше, короче и т. Д.
Пожалуйста, дайте мне знать, хотите ли вы этого.
Альтернативный
Альтернатива - нарисовать сюжет 2 раза. Первый вызов генерирует график без легенды (потому что он не указан правильно, и это приводит к ошибке). Затем ось строится (с регулировкой линии, которая может быть разной в зависимости от размера окна печати). В-третьих, и наконец, легенда рисуется (дальше влево, чем в предыдущем сюжете с ошибкой).
image.plot(x,y,z, smallplot = c(.85, .86, 1, .8))
axis(4, at = y, labels = yaxis2, line = -6)
image.plot(x,y,z, smallplot = c(.89, .92, .2, .8), legend.only = TRUE)