【发布时间】:2015-10-23 07:58:02
【问题描述】:
我正在尝试创建一个带有边缘直方图的散点图,如this question。 我的数据是两个(数字)变量,它们共享七个离散(有点)对数间隔的水平。
在ggExtra 包中的ggMarginal 的帮助下,我已经成功完成了这项工作,但是我对结果不满意,因为使用与散点图相同的数据绘制边缘直方图时,事情不t 排队。
如下所示,直方图条在数据点本身的右侧或左侧稍有偏差。
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 的答案。
【问题讨论】:
标签: r plot ggplot2 histogram scatter-plot