我试图创建一个散点图,在其中加入边际直方图,就像这个问题中所示。
我的数据包括两个(数值)变量,它们共享七个离散的(某种程度上)对数间隔级别。
我已经成功地使用
我已经成功地使用
ggExtra
包中的ggMarginal
完成了这项工作。然而,我对结果并不满意,因为当使用与散点图相同的数据绘制边际直方图时,事情并不匹配。
如下所示,直方图条偏向于数据点本身的右侧或左侧。library(ggMarginal)
library(ggplot2)
x <- rep(log10(c(1,2,3,4,5,6,7)), times=c(3,7,12,18,12,7,3))
y <- rep(log10(c(1,2,3,4,5,6,7)), times=c(3,1,13,28,13,1,3))
d <- data.frame("x" = x,"y" = y)
p1 <- ggMarginal(ggplot(d, aes(x,y)) + geom_point() + theme_bw(), type = "histogram")
这个问题的一个可能解决方案是将直方图中使用的变量改为因子,这样它们就可以与散点图轴很好地对齐。
在使用ggplot
创建直方图时,这种方法效果很好:
p2 <- ggplot(data.frame(lapply(d, as.factor)), aes(x = x)) + geom_histogram()
然而,当我尝试使用 ggMarginal
进行操作时,我没有得到预期的结果——似乎 ggMarginal
的直方图仍将我的变量视为数字型。
p3 <- ggMarginal(ggplot(d, aes(x,y)) + geom_point() + theme_bw(),
x = as.factor(x), y = as.factor(y), type = "histogram")
如何确保我的直方图条形图在数据点上居中?
我绝对愿意接受不涉及使用 ggMarginal
的答案。