我一直无法使我的 R 图的图具有相等的宽度和中断数。
目前,我有
hist(result1,xlim=c(2,4),breaks=10)
abline(v=pi,col="red")
hist(result2,xlim=c(2,4),breaks=10)
我正在尝试将 2 个图形叠加在一起,它们具有相同的条形轴 # 和相同的条形宽度。
奇怪的是,当我设置breaks = 10 时,顶部的图表偶尔会比底部的条形图多,并且它们的宽度不相等。我没有正确理解breaks参数吗?
我猜你正在将两个直方图绘制在彼此之上:
par(mfrow=c(2,1))
对于固定休息时间,我建议:
bins <- seq(2, 4, by=0.1)
hist(results1, breaks=bins, xlim=c(2,4))
hist(results2, breaks=bins, xlim=c(2,4))
我认为使用ggplot2
刻面非常适合这种情节。让我们创建一些数据:
carat1 = diamonds
carat1$id = "one"
carat2 = diamonds
carat2$id = "two"
carat2 = within(carat2, { carat = carat * 1000 })
carat_comb = rbind(carat1, carat2)
让我们做一个情节:
ggplot(aes(x = carat), data = carat_comb) +
geom_histogram() + facet_wrap(~ id, ncol = 1)
当 x 轴完全不同时,要使这个绘图起作用,就是告诉 ggplot 轴值可以独立确定:
ggplot(aes(x = carat), data = carat_comb) + geom_histogram() +
facet_wrap(~ id, ncol = 1, scales = "free_x")
我总是发现你描述的问题也很难处理,而且一般来说,如果你的数据非常不同,你可能无法做你想做的事。即便如此,使用ggplot2
图形版本可能会更好:
library('ggplot2')
qplot(x = carat, data = diamonds, geom = "histogram", binwidth = 0.1)
如果这种方法对您有用,您可以执行以下操作来获得两个图,一个在另一个之上:
library('grid')
a <- qplot(x = carat, data = diamonds, geom = "histogram", binwidth = 0.1)
b <- qplot(x = carat, data = diamonds, geom = "histogram", binwidth = 0.1)
vplayout <- function(x, y) viewport(layout.pos.row = x, layout.pos.col = y)
grid.newpage()
pushViewport(viewport(layout = grid.layout(2, 1)))
print(a, vp = vplayout(1,1))
print(b, vp = vplayout(2,1))