R - ggplot2:geom_text的位置不起作用

时间:2017-02-09 15:04:15

标签: r ggplot2

我在这个网站上搜索了一个解决方案,但我一无所获。

问题在于:

我尝试使用geom_text和函数" y"来固定条形图中标签的位置。但即使我改变了" y"的值,位置也不会改变,它仍然位于条形图底线的中间位置。

所以我尝试使用" vjust",它可以工作,但是位置是根据与酒吧顶部的距离确定的,所以由于我的酒吧不具有相同的高度,所以标签不会#39; t具有相同的位置。我更愿意将它们对齐,并且功能" y"提供了。

Here is the plot

这是我的数据示例:

Phoneme CoG
s   6112
s   5946
s   6545
s   6097
s   6245
s   5604
s   6189
s   6030
s   5386
s   6105
s'  5546
s'  6212
s'  5963
s'  5774
s'  6213
s'  6118
s'  5837
s'  5072
s'  4642
s'  4988

这是代码:

ggplot(data=donnees_M, aes(x=Phoneme, y=CoG, fill=Phoneme)) +    
geom_bar(position=position_dodge(), colour="black", stat="identity") +    
geom_errorbar(aes(ymin=CoG-ci, ymax=CoG+ci), width=.2,position=position_dodge(.9)) +    
labs(x=NULL, y="Centre of Gravity") + theme(panel.background = element_rect(fill = "white")
, panel.grid.minor=element_line(color = "grey30"), panel.grid.major =element_line(color = "grey30")) +
scale_fill_manual(values=c("deepskyblue3","seagreen4")) +     
geom_text(aes(y=5.5, label=format(donnees_M$CoG,digits=0)), size = 10) +     
guides(fill=F) +     
theme(axis.title.y = element_text(size = rel(2), angle = 90)) + ylim(0,6000) +     
theme(axis.text.x = element_text(size = rel(3), color="black")) +     
theme(axis.text.y = element_text(size = rel(2.8), color="black"))

这很奇怪,因为我过去已经使用过这个功能而且没有任何问题。除了我的数据之外,之前的脚本没有任何改变。

你对这个问题有什么看法吗?

告诉我你是否需要我的脚本和我的数据中的更多信息

先谢谢

1 个答案:

答案 0 :(得分:1)

实际上y值确实会改变位置,但是你在6000的范围内使用5.5 ..所以你看不到它。如果您尝试y=1000,您会看到它 如果它是一个固定值,你不需要它,它可能在外面:

geom_text(aes(label=format(donnees_M$CoG,digits=0)), y=1000, size = 10) 

但是如果你想让位置依赖于值,你需要创建一个带有文本y位置的变量:(见这里的栏中间)

donnees_M$text_y <- donnees_M$CoG/2

ggplot(data=donnees_M, aes(x=Phoneme, y=CoG, fill=Phoneme)) +
    geom_bar(position=position_dodge(), colour="black", stat="identity") +
    geom_errorbar(aes(ymin=CoG-ci, ymax=CoG+ci), width=.2,position=position_dodge(.9)) +
    labs(x=NULL, y="Centre of Gravity") + theme(panel.background = element_rect(fill = "white")
    , panel.grid.minor=element_line(color = "grey30"), panel.grid.major =element_line(color = "grey30")) +
    scale_fill_manual(values=c("deepskyblue3","seagreen4")) + 

    geom_text(aes(y=text_y, label=format(donnees_M$CoG,digits=0)), size = 10) + 

    guides(fill=F) + 
    theme(axis.title.y = element_text(size = rel(2), angle = 90)) + ylim(0,6000) + 
    theme(axis.text.x = element_text(size = rel(3), color="black")) + 
    theme(axis.text.y = element_text(size = rel(2.8), color="black"))