将轴刻度与晶格直方图中的区间对齐

时间:2015-06-19 16:19:20

标签: r plot lattice

我使用Lattice

绘制了直方图
histogram(~Time |factor(Bila), data=flexi2, xlim= c(5, 15), ylim=c(0, 57),
      scales=list(x=list(at=seq(5,15,1))), xlab="Time", 
      subset=(Bila%in% c("")))`

我得到的垃圾箱与确切的小时数不匹配,而我希望垃圾箱在确切的时间开始,例如,6,7等。我使用晶格,因为我想要条件直方图。我在这里提取了一个直方图来说明。 enter image description here

更新: 这是一个可重复的例子(我希望)。可以看出0例如不在箱子的极限。

x<-rnorm(1000)
histogram(~x)

enter image description here

1 个答案:

答案 0 :(得分:2)

这是因为您使用scales = list(x = list(at = 5:15))指定了x轴刻度,但实际上并未更改断点。它也出现在默认情况下:默认轴标签是整数,但默认断点是以编程方式确定的,除非您有整数值数据,否则不一定是整数。

一个简单的解决方法是在breaks参数中指定自己的中断:

histogram(~Time |factor(Bila), data=flexi2, subset=(Bila %in% c("")),
  xlim= c(5, 15), ylim=c(0, 57),
  breaks = 5:15,
  scales = list(x = list(at = 5:15)),
  xlab="Time")

一个例子:

library(lattice)
x <- rnorm(1000)
x[abs(x) > 3] <- 3
x_breaks <- c(-3, -1.5, 0, 1.5, 3)
histogram(~ x,
          title = "Defaults")
histogram(~ x, breaks = x_breaks,
          title = "Custom bins, default tickmarks")
histogram(~ x, scales = list(x = list(at = x_breaks)),
          title = "Custom tickmarks, default bins")
histogram(~ x, breaks = x_breaks, scales = list(x = list(at = x_breaks)),
          title = "Custom tickmarks, custom bins")