我有以下两部分图未对齐:
Side-by-side plots not aligned
这些图由以下代码生成:
require(ggplot2)
require(gridExtra)
set.seed(0)
data <- data.frame(x=rpois(30,5),y=rpois(30,11),z=rpois(300,25))
left.plot <- ggplot(data,aes(x,y))
+ geom_bin2d(binwidth=1)
margin.data <- as.data.frame( margin.table(table(data),1))
right.plot <- ggplot(margin.data, aes(x=x,y=Freq))
+ geom_bar(stat="identity")+coord_flip()
grid.arrange(left.plot, right.plot, ncol=2)
如何将左图中的行与右图中的条对齐?
答案 0 :(得分:0)
你的问题很简单,尽管是双重的。
最终,您需要使用scale_y_continuous()
和scale_x_continuous()
来设置轴限制以匹配eatch数字。 x
值是一个因素,这阻碍了这一点。将它转换为数字并进行一些缩放,你就可以了。
left.plot <- ggplot(data,aes(x,y)) +
geom_bin2d(binwidth=1) +
scale_y_continuous(limits = c(1, 16))
margin.data <- as.data.frame( margin.table(table(data),1))
right.plot <- ggplot(margin.data, aes(x=as.numeric(as.character(x)),y=Freq)) +
geom_bar(stat="identity") +
scale_x_continuous(limits = c(1, 16)) +
xlab("x") +
coord_flip()
答案 1 :(得分:0)
使用包ggExtra我能得到几乎解决方案
require(ggplot2)
require(ggExtra)
set.seed(0)
data <- data.frame(x=rpois(30,5),y=rpois(30,11),z=rpois(300,25))
left.plot <- ggplot(data,aes(x,y)) + geom_bin2d(binwidth=1)
ggMarginal(left.plot, margins="y", type = "histogram", size=2,bins=(max(data$y)-min(data$y)+1),binwidth=1.06)
我说几乎是因为我必须手动设置binwidth = 1.06以对齐条形和计数。