繁体   English   中英

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

[英]How to move the vertical color strip legend in image.plot

使用 R 中fields image.plot ,我需要将垂直颜色图例向右移动一点,以便在图的右侧容纳第二个 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)

图片

所以你会看到新的轴标签如何撞到图例中。 如何移动图例以使其不会撞到新的轴标签?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM