r - hexbin 和 ggplot 在不同的面板中
问题描述
我想在 R 的不同面板中将 hexbin 图与 ggplot 结合起来。我可以接近,但它仍然无法正常工作:
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 对象。
我的理解是 hexbin 和 ggplot2 包都使用grid
图形系统,这似乎意味着我可以使用几种方法之一来组合面板(例如,如何使用不同的包来做到这一点)。但是, hexbin 包使用pushHexport
,这使得这些解决方案中的任何一个都不可行。
解决方案
推荐阅读
- javascript - 如何使用模态将带有注释的点添加到传单地图?
- listview - 如果您在带有 Firestore 的 Listview 中收到任何新的聊天消息或项目,则将其推送/动画到顶部
- python - Plotly:如何在指定点添加垂直线?
- javascript - 尝试使用 big-int npm 查找阶乘数的总和给出错误答案
- python-sphinx - 下载角色不起作用阅读文档
- python - 如何链接蛇身体的运动?
- azure-api-management - 问:我的订阅未显示在新的开发者门户中,但存在于旧版中
- c# - Moq 的 Mock.Get 在 Nsubstitute 中的等效语法
- python - 在 Flask 上使用 POST 传递更多信息
- css - 我在节点中的搜索路由重定向回同一页面,并且该页面看不到包含我的 css 的资产文件夹