绘制具有相同 z 级别的多个 binhex

机器算法验证 r ggplot2
2022-04-04 18:24:00

我有一点气象记录,包括温度和太阳辐射。我想将它们与另一个变量进行对比,我们将其称为 Rating,并查看数据是如何分布的。这就是我正在做的事情:

d1 <- ggplot(data = mydata, aes(Temperature, Rating, fill = ..density..)) + stat_binhex(na.rm = TRUE) + opts(aspect.ratio = 1)#, legend.position = "none") 
d2 <- ggplot(data = mydata, aes(Solar.Irrad, Rating, fill = ..density..)) + stat_binhex(na.rm = TRUE) + opts(aspect.ratio = 1)#, legend.position = "none")

我通过使用 gridExtra 包中的 grid.arrange 在同一个窗口上得到这两个东西:

grid.arrange(d1,d2, nrow=1)

两张图在一起,不同的 z 比例 这会产生所示的图像。现在,我的问题是我真的希望两个图表共享它们的 z 比例:图例应该是相同的,并且颜色方案应该通过不同的图表是同质的。这可能吗?我完全迷路了,有人知道这样做的方法吗?

1个回答

您是否考虑过直接在 ggplot2 中使用 faceting 功能?您可以在调用facet_wrap(). 这是给你的一个例子:

library(ggplot2)
library(hexbin)
#Sample data.frame.
dat <- data.frame(
  rating = sample(500:2500, 1000, TRUE)
  , Solar.Radiation = sample(0:1200, 1000, TRUE)
  , Ambient.Temperature = sample(-10:25, 1000, TRUE)
  )

#Melt data.frame for plotting
dat.m <- melt(dat, id.vars = "rating")

#Plotting
ggplot(dat.m, aes(value, rating, fill = ..density..)) +
  stat_binhex(na.rm = TRUE) +  opts(aspect.ratio = 1) +
  facet_wrap(facets = ~  variable, scales = "free_x")