Добавить прямую линию и текст на шестнадцатеричном графике - PullRequest
0 голосов
/ 28 ноября 2018

Я хочу добавить стандартную линию 1: 1 (с перехватом 0 и наклоном 1) и немного текста (например, R-квадрат) на моем hexbinplot.Пробные коды могут быть что-то вроде

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. Это должно быть от нижнего левого угла до верхнего правого угла ,, но наклон (должен быть 1) и пересечение (должен быть 0) выглядят измененными, когда я увеличиваю / уменьшаю графическое окно в RStudio и
  2. оба конца линии не простираются до границы сюжета

Другой вопрос о том, как добавить текст на сюжет.

Идеальным сюжетом может быть внешний видкак enter image description here

1 Ответ

0 голосов
/ 28 ноября 2018

Милый, что пакет все еще использует решетку для графики.Это действительно ретро!

Вот путь решетки:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...