geom_historgram()与hist():控制geom中的范围

时间:2014-12-08 16:25:33

标签: r ggplot2 histogram

考虑以下两个图

 library(ggplot2)
 set.seed(666)
 bigx <- data.frame(x=sample(1:12,50,replace=TRUE))

 ggplot(bigx, aes(x=x)) + 
    geom_histogram(fill = "red", colour =         
                   "black",stat="bin",binwidth=2) +
    ylab("Frequency") +
    xlab("things") +
    ylim(c(0,30))

 hist(bigx$x)

enter image description here

enter image description here

为什么我会在ggplot上获得超过12的悬念?当我使用right = TRUE时,这只会将悬垂移动到零以下。我想要hist()的简单且简单有界的结果,但使用ggplot2

我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果您的目标是使用hist(...)重现ggplot的输出,则可以使用:

ggplot(bigx, aes(x=x)) + 
  geom_histogram(fill = "red", colour = "black",stat="bin",
                 binwidth=2, right=TRUE) +
  scale_x_continuous(limits=c(0,12),breaks=seq(0,12,2))

或者,更一般地说,这个:

brks <- hist(bigx$x, plot=F)$breaks
ggplot(bigx, aes(x=x)) + 
  geom_histogram(fill = "red", colour = "black",stat="bin",
                 breaks=brks, right=TRUE) +
  scale_x_continuous(limits=range(brks),breaks=brks)

显然,直方图的ggplot默认值是使用右边闭合间隔,而hist(...)的默认值是闭合间隔。此外,ggplot使用不同的算法来计算x轴中断和限制。