hexbin и ggplot на разных панелях

#r #ggplot2 #graphics #r-grid #hexagonal-tiles

#r #ggplot2 #графика #r-сетка #шестиугольные плитки

Вопрос:

Я хотел бы объединить график hexbin с ggplot на разных панелях в R. Я могу подобраться поближе, но это все еще не работает:

 
library(hexbin)
library(ggplot2)
library(grid)

x1 <- rnorm(100)
y1 <- rnorm(100)

x2 <- rnorm(100, 1, 0.2)
y2 <- rnorm(100, 1, 0.2)


# combined hexbins
xbnds <- range(c(x1, x2))
ybnds <- range(c(y1, y2))
xbins <- 20

h1 <- hexbin(x1, y1, xbins=xbins, xbnds=xbnds, ybnds=ybnds)
h2 <- hexbin(x2, y2, xbins=xbins, xbnds=xbnds, ybnds=ybnds)

# ggplot
df <- data.frame(x1=x1, y1=y1)
g <- ggplot(df, aes(x=x1, y=y1))   geom_point(aes(x=x1, y=y1))

### KINDA WORKS

grid.newpage()
pushViewport(viewport(layout = grid.layout(1, 2)))
pushViewport(viewport(layout.pos.col=1, layout.pos.row=1))
print(g)

pushViewport(viewport(layout.pos.col = 2, layout.pos.row = 1))
plotFrame <- plot(h1, type='n', newpage=FALSE)
pushHexport(plotFrame$plot.vp, clip='on')
grid.hexagons(h1, style='constant.col', border='white', pen='blue')
grid.hexagons(h2, style='constant.col', border='white', pen='red')
 

Я думаю, что одна из сложностей заключается в том, что, как вы можете видеть, я накладываю два объекта hexbin на один и тот же график. Вот что я получаю:

введите описание изображения здесь

Я бы хотел, чтобы точечная диаграмма (ggplot) была слева, а график шестигранной строки — на правой панели, вот так (сделано вручную):

введите описание изображения здесь

Я думаю, что одна из сложностей заключается в том, что, как вы можете видеть, я накладываю два объекта hexbin на один и тот же график.

Насколько я понимаю, пакеты hexbin и ggplot2 используют grid графическую систему, что, по-видимому, подразумевает, что я мог бы использовать один из нескольких способов объединения панелей (например, как это сделать с разными пакетами). Однако пакет hexbin использует pushHexport , что делает любое из этих решений неработоспособным.

Комментарии:

1. прошло много времени, но есть ли возможность, которую вы могли бы использовать geom_hexbin() изнутри ggplot для своего hexbin?

2. Спасибо за предложение — я на самом деле только что наткнулся на geom_hexbin() . Похоже, это работает для решения этой проблемы, и это намного проще сделать по сравнению с борьбой с pushHexport().