我正在尝试使用geom_bar创建结果直方图,并希望将结果计数作为文本包含在与x轴对齐的每个条形中.
这是我到目前为止:
df <- data.frame(results = rnorm(100000))
require(ggplot2)
p = ggplot(df, aes(x = results))
p = p + geom_bar(binwidth = 0.5, colour = "black", fill = "white", drop = T)
p = p + scale_y_log10()
p = p + geom_hline(aes(yintercept = 1))
p = p + stat_bin(geom = "text", binwidth = 0.5,
aes(x = results, angle = 90, y = 2,
label = gsub(" ", "",format(..count.., big.mark = ",",
scientific=F))))
p
Run Code Online (Sandbox Code Playgroud)

正如您所看到的那样,文本未与x轴对齐,因为我的真实数据要大得多(大约数百万),这个问题会稍微恶化:
目前的数字:

想要的人物:

注意:通过在stat_bin中设置y = 3,我会收到一条警告,指出"将变量映射到y并使用stat ="bin"等等......"但是我不知道如何强制将文本的位置放在图的底部没有定义ay值.
你可以通过交换geom和执行此操作stat.换句话说,使用geom_text(stat="bin", ...).
这允许您显式设置y位置(即在...之外aes)并指定文本对齐方式hjust=0.
试试这个:
ggplot(df, aes(x = results)) +
geom_bar(binwidth = 0.5, colour = "black", fill = "white", drop = T) +
scale_y_log10() +
geom_hline(aes(yintercept = 1)) +
geom_text(stat="bin", binwidth = 0.5, y=0.1, hjust=0,
aes(x = results, angle = 90,
label = gsub(" ", "", format(..count.., big.mark = ",",
scientific=F))))
Run Code Online (Sandbox Code Playgroud)
