在hexbinplot上添加直线和文本

时间:2018-11-28 08:22:30

标签: r plot

我想在hexbinplot上添加一条标准的1:1行(截距0和斜率1)和一些文本(例如R-square)。试用代码可能类似于

require(hexbin)
x1 <- rnorm(10000)
x2 <- rnorm(10000)
df <- data.frame(cbind(x1, x2))
hex <- hexbin(x1, x2, xbins = 300)
hexbinplot(x2 ~ x1, data = df, aspect = '1', xbins = 300, xlim = c(-5, 5), ylim = c(-5, 5))
hexVP.abline(hexViewport(hex), 0, 1)

这给了我下面的情节 enter image description here

添加的行有两个问题

  1. 应该从左下角到右上角,但是当我在RStudio中放大/缩小图形窗口时,斜率(应为1)和截距(应为0)看起来会发生变化
  2. 线的两端不延伸到绘图边框

另一个问题是如何在情节上添加文本。

理想的情节可能看起来像 enter image description here

1 个答案:

答案 0 :(得分:5)

可爱的是,程序包仍然使用点阵图形。真的很复古!

这是晶格方式:

hexbinplot(x2 ~ x1, data = df, aspect = '1', xbins = 300, xlim = c(-5, 5), ylim = c(-5, 5), 
           panel = function(x, y, ...) {
             panel.hexbinplot(x, y, ...)
             lattice::panel.abline(a = 0, b = 1)
           })

resulting plot

编辑:添加了其他要求后:使用panel.text将文本添加到点阵图中。)

我个人将使用ggplot2及其geom_hex

library(ggplot2)
ggplot(df, aes(x = x1, y = x2)) +
  geom_hex(bins = 300) +
  xlim(-5, 5) + ylim(-5, 5) +
  geom_abline(intercept = 0, slope = 1)