如何在image.plot中移动垂直色条图例

时间:2019-01-10 14:58:51

标签: r legend

使用R中image.plot中的fields,我需要将垂直颜色图例向右移动一点,以便在图的右侧容纳第二个y轴。这是我在说什么的可复制示例:

x <- seq(0, 1, 0.1)
y <- x
n <- length(x)
z <- matrix(runif(n^2), n, n)
xyzlist <- list(x, y, z)
image.plot(x,y,z)
yaxis2 <- y^2
axis(4, at = y, labels = yaxis2)

pic

因此,您将看到新的轴标签如何崩溃到图例中。如何将图例移到新的轴标签上,以免崩溃?

1 个答案:

答案 0 :(得分:2)

通过使用函数的参数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)

这将产生以下图:

enter image description here

当然,您可以进一步修改图例,使其更小,更短等

请让我知道这是否是您想要的。

替代

另一种方法是绘制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)