使用 Ggplot2 制作直方图时调整 x 轴和 bins

Mik*_*ike 3 r ggplot2

我不熟悉 ggplot2 中的直方图,觉得我错过了一些明显的东西。使用下面的数据,我正在尝试创建一个简单的直方图。我想要做的就是将 x 轴计数为 5,所以 0-5-10-15-20-25-30...等...100。所以垃圾箱会将年龄组除以 5。我想也许我必须设置界限或其他什么?我不确定为什么下面的示例创建的条形比其他条形更宽,以及为什么这些条形在 x 轴上没有正确排列。

我试图找到以前被问过的类似问题,但我仍然很困惑,尤其是在“break =”和“binwidth”以及边界等之间。

我更喜欢使用 ggplot 2.0 的答案。

 Age<-c(18,82,65,89,10,44,46,23,10,15,22,33,34,30,50,60)
 Sex<-c("M","F","F","M","F","M","F","M","F","M","F","M","F","F","F","M")
 Df<-data.frame(Sex,Age)

 ggplot(Df,aes(Age))+geom_histogram(breaks=seq(0,100,by=10),aes  (fill=..count..))
Run Code Online (Sandbox Code Playgroud)

joe*_*son 5

这是您正在寻找的吗?

Df$cut <- cut(Df$Age, seq(0,100,by=5))
ggplot(Df,aes(cut))+geom_histogram(stat= "count", aes(fill = ..count..))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Jac*_*cob 5

binwidth控制每个 bin 的宽度,同时bins指定bin的数量和 ggplot 计算出来。

根据您希望对年龄桶进行多少控制,这可能会完成这项工作:

ggplot(Df, aes(Age)) + geom_histogram(binwidth = 5)
Run Code Online (Sandbox Code Playgroud)

编辑:为了更密切地控制休息实验:

+ scale_x_continuous(breaks = seq(0, 100, 5))
Run Code Online (Sandbox Code Playgroud)

要标记实际的跨度,而不是条形的中间,这是年龄直方图之类的东西所需要的,请使用以下内容:

ggplot(Df, aes(Age)) +
geom_histogram(
    breaks = seq(10, 90, by = 10), 
    aes(fill = ..count..,
    colour = "black")) + 
scale_x_continuous(breaks = seq(10, 90, by=10))
Run Code Online (Sandbox Code Playgroud)

  • 这段代码产生了我正在寻找的东西 - ggplot(Df, aes(Age)) + geom_histogram(breaks=seq(10,90,by=10),aes(fill=..count..,colour="black") )+ scale_x_continuous(breaks = seq(10, 90,by=10)) (2认同)