Форматирование и управление сюжетом из пакета R " hexbin"

Я создаю сюжет, используя пакет hexbin:

enter image description here

# install.packages("hexbin", dependencies=T)
library(hexbin)


set.seed(1234)
x <- rnorm(1e6)
y <- rnorm(1e6)
hbin <- hexbin(
  x   = x
  , y = y
  , xbin = 50
  , xlab = expression(alpha)
  , ylab = expression(beta)
)


## Using plot method for hexbin objects:
plot(hbin, style = "nested.lattice")

abline(h=0)

это, кажется, генерирует объект S4 (hbin), который я затем строю с помощью plot. Теперь я хотел бы добавить горизонтальную линию к этому сюжету, используя abline, но, к сожалению, это дает ошибку:

сюжет.новое еще не называлось

Я также не знаю, как я могу манипулировать, например, положением меток оси (альфа и бета находятся в пределах цифры), изменять положение легенды и т. д.

Я знаком с ООП, но до сих пор я не мог узнать, как plot() обрабатывает объект (вызывает ли он определенные методы объекта?) и как я могу манипулировать результирующим сюжетом.

почему я не могу просто нарисовать линию на участке?

как я могу манипулировать метками оси?

3 ответов


используйте решетчатую версию hex bin -hexbinplot(). С panel вы можете добавить свою строку и с style вы можете выбрать различные способы визуализации шестигранники. Проверить справке hexbinplot дополнительные.

library(hexbin)
library(lattice)
x <- rnorm(1e6)
y <- rnorm(1e6)
hexbinplot(x ~ y, aspect = 1, bins=50, 
           xlab = expression(alpha), ylab = expression(beta), 
           style = "nested.centroids",
           panel = function(...) {
             panel.hexbinplot(...)
             panel.abline(h=0)
             })

enter image description here


hexbin использует grid графика, а не base. Существует аналогичная функция,grid.abline, который может рисовать линии на участках, указывая наклон и перехват, но используемая система координат сбивает с толку:

grid.abline(325,0)

получает примерно то, что вы хотите, но перехват здесь был найден на глаз.

вы будете иметь больше удачи, используя ggplot2:

library(ggplot2)
ggplot(data,aes(x=alpha,y=beta)) + geom_hex(bins=10) + geom_hline(yintercept=0.5)

hexbin


У меня было много проблем с поиском многих базовых корректировок графика (диапазоны осей, метки и т. д.) с hexbin библиотека, но я понял, как экспортировать точки в любую другую функцию построения графика:

hxb<-hexbin(x=c(-15,-15,75,75),
            y=c(-15,-15,75,75),
            xbins=12)

hxb@xcm    #gives the x co-ordinates of each hex tile
hxb@ycm    #gives the y co-ordinates of each hex tile
hxb@count  #gives the cell size for each hex tile

points(x=hxb@xcm, y=hxb@ycm, pch=hxb@count)

вы можете просто ввести эти три вектора в любой инструмент построения, который вы обычно используете.. существует обычная настройка масштабирования размера и т. д. но это намного лучше, чем упрямая функция hexplot. Проблема, которую я нашел с ggplot2 stat_binhex это то, что я не мог заставить гексы быть разных размеров... просто разные цвета.

Если вы действительно хотите, шестигранники, plotrix имеет функцию рисования шестиугольника, которая, я думаю, в порядке.