Форматирование и управление сюжетом из пакета R " hexbin"
Я создаю сюжет, используя пакет hexbin
:
# 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)
})
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 библиотека, но я понял, как экспортировать точки в любую другую функцию построения графика:
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 имеет функцию рисования шестиугольника, которая, я думаю, в порядке.