r - 如何移动 image.plot 中的垂直色带图例

标签 r legend

使用 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)

pic

因此您可以看到新的轴标签如何融入图例中。如何移动图例以免撞到新的轴标签?

最佳答案

您可以(在某种程度上)使用函数的参数 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)

关于r - 如何移动 image.plot 中的垂直色带图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54131378/

相关文章:

javascript - 使用图表师在条形图中的图例对齐

html - 带有图像和标题的框的基本 html css 设计

python - 将图例或背景图像添加到 Igraph 0.6 (for python) 图中

r - abline 和 stat_smooth 的 ggplot2 图例

r - 通过 R 中的标准计算平均值

r - 如何从 plm FE 回归中获得 between 和 overall R2?

读取多个 png 文件以使用 grid.arrange 创建新图

r - 如何在 ggplot2::label_parsed 的绘图中包含美元符号

使用自定义顺序对行重新排序

legend - 使用 Geotools JMapFrame 显示图例