小编Dan*_*ner的帖子

带有注释的geom_bar,其中的条形与x轴对齐

我正在尝试使用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值.

r ggplot2

4
推荐指数
1
解决办法
1256
查看次数

ggplot:为每个条添加水平线+重新定位刻度标签

使用ggplot时,我在格式化的两个方面遇到了一些困难.

首先,我希望能够为每个条添加水平线,以便条形如下所示:

img http://www.eurosurveillance.org/images/dynamic/ew/v05n47/Legionella%20Norway%20epi%20curve.gif

第二,我想改变刻度标签的位置,使它们落在每个条之间,使标签看起来像这样

IMG

到目前为止我所拥有的:

values=runif(50,0,20)
sex=rep(c("Male","Female"),25)

df=data.frame(values,sex)

label=c("","0-5","5-10","10-15","15-20")
sep=seq(0,20,5)

ggplot(df, aes(x = values,fill=sex))+geom_bar(binwidth=5,colour="black")+
scale_x_discrete(breaks=sep,labels=label,limits=sep)
Run Code Online (Sandbox Code Playgroud)

r ggplot2

2
推荐指数
1
解决办法
499
查看次数

标签 统计

ggplot2 ×2

r ×2