以正确的方式在ggplot中绘制直方图

时间:2016-06-07 07:49:26

标签: r ggplot2

我有一个看起来像这样的数据集。

score <- c(0,0,0,1,2,3,-2,-1)
df <- data.frame(score)

现在我想用直方图绘制 ggplot函数:

g <- ggplot(data = df, aes(x = score))
g + geom_histogram(breaks = seq(-3,3,by=1), col = "red", fill = "green", alpha = .2) + labs(x="Age", y="Count")

它工作和看起来很好,但我想知道轴是否正确标记?我也觉得直方图略显负面。实际上我想绘制它,以便0 bin位于-0.5和+0.5之间。

关于如何让这个工作的任何想法?

2 个答案:

答案 0 :(得分:0)

删除breaks参数并将binwidth设置为1.

g + geom_histogram(col = "red", fill = "green", alpha = .2,binwidth = 1) + labs(x="Age", y="Count")

答案 1 :(得分:0)

如果你想通过显示-3:3范围内每个值的条形来使直方图“平衡”,你也可以试试这个。它使用table计算每个值的频率,然后为频率为0的-3添加一个虚拟值。

score <- c(0,0,0,1,2,3,-2,-1)
df <- data.frame(score)

df2 <- data.frame(table(df))
df2 <- rbind(data.frame(df = "-3", Freq = 0), df2)

ggplot(df2, aes(x = df, y = Freq)) + 
  geom_bar(stat = "identity", col = "red", fill = "green", alpha = .2) +
  labs(x="Age", y="Count")

enter image description here