2016-09-29 39 views
0

我想在ggplot2条形图的右上角'注释'文字,该文字包含x轴的字符和y轴的数值。我看到的所有文档都是为了注释一个文本,x和y坐标都必须给定数字值。ggplot anotate当x值为字符时

下面是一个例子图表: -

这是该数据帧

df1 <- data.frame(p=c("a","b","c","a","b","c"), 
        v=c(10,9,8,6,5,2), 
        u=c("aa","bb","cc","aa","bb","cc") 
       ) 

汇总数据帧

df2 <- df1 %>% select(p, v) %>% group_by(p) %>% summarise_each(funs(sum)) 

柱状图中

p <- ggplot(data = df2, aes(p, v, label = v)) + 
     geom_bar(stat = "identity", position = "dodge") + 
     geom_text(position = position_dodge(.9), vjust = -1, fontface = "bold", size = 5) 

p 
+0

夫妇的方式做到这一点!但是,这里有一个很好的新的(对我来说)包https://cran.r-project.org/web/packages/cowplot/vignettes/introduction.html – infominer

+0

快速看一下URL显示的例子 - 注释,您仍然需要提供x和y轴数字坐标。 – Antex

+0

那么你必须告诉它在哪里绘制文本。或者你希望它是自动的?只是说右上角? – infominer

回答

1

你应该能够做我只需将该位置放入aes()即可。这为我工作(除非我误解你的意图):

ggplot(data = df2, aes(p, v, label = v)) + 
    geom_bar(stat = "identity", position = "dodge") + 
    geom_text(position = position_dodge(.9), vjust = -1, fontface = "bold", size = 5) + 
    geom_text(aes(x = "c", y = 15, label = "Here I am")) 

enter image description here

+0

就是这样!谢谢Mark Peterson! – Antex

+0

另一个问题是,当我在aes中设置'颜色'或'颜色'时 - 无论我给它选择什么颜色,它都会呈现'红色'。这里是语法 - geom_text(aes(x =“c”,y = 18,label =“我在这里”,color =“darkblue”,size = 15,fontface =“bold”)) – Antex

+1

将颜色设置为如果你只是想设置颜色,那么'aes()'。 'aes'内部的东西被映射,在颜色的情况下映射到默认调色板。另一种方法是,如果你想在图例中显示颜色,就是使用'scale_color_identity'(或者,在'aes()'中设置col =“Annotation”'',然后使用'scale_color_manual(values = c(“ Annotation“=”darkblue“)') –