R晶格:使绘图区域相同

时间:2015-11-02 23:41:27

标签: r histogram lattice limits

我正在尝试制作一个复合图,其顶部有一个直方图,底部有一个点图。他们应该以相同的比例显示数据,所以我希望比例尺匹配。

以下是一些几乎可以实现我想要的代码:

ability <- rnorm(50)
parameters <- data.frame(Item=paste("Q",1:10),Difficulty=rnorm(10))
xrange<- range(c(ability,parameters$Difficulty))

print(histogram(ability,endpoints=xrange,xlim=xrange*1.04),
      position=c(0,.68,1,1),more=TRUE,newpage=TRUE)
print(dotplot(Item~Difficulty,parameters,xlim=xrange*1.04),
      position=c(0,0,1,.7))

以下是此函数histogram+dotplot

的输出

问题是这两个函数中的刻度线并不完全对齐。这两个图在左侧为刻度分配不同的空间量,直方图在右侧有刻度,而点图则没有。我无法弄清楚如何改变它(我怀疑它被隐藏在scale参数中的某处)。

另外,使用打印和位置有点麻烦,有更好的更通用的方法来做到这一点。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我想出了如何在基础R图形中做到这一点:

layout(matrix(c(1,2),2,1,byrow=TRUE),heights=c(1,3))
par(mar = c(3.1, 4.1, 3.1, 2.1))
hist(ability,xlim=xrange*1.2,xlab="",col="cyan")
par(mar = c(3.1, 4.1, 0.1, 2.1))
dotchart(parameters$Difficulty,parameters$Item,xlim=xrange*1.2,main="")

这产生了我需要的东西。