How to annotate different values for each facet (bar plot) on R?

ε祈祈猫儿з 提交于 2019-12-04 05:27:24

问题


I'd like to know how to annotate each facet in my bar plot. Right now, I'm using the geom_signif function which works perfectly except that it duplicates the annotation on one facet onto the other facet.

My code is as such:

geom_signif(annotation = c("p=0.01"),
            y_position = c(9), xmin = c(2), xmax = c(3))

My bar plot:

Please advise. I've read through some similar solutions here, tried some other ways but I still can't seem to figure it out.. This is the closest and easiest solution to what I got so far except that I want 2 different annotations (labeling of p-values in this case -I ran ANOVA separately) on the facets.


回答1:


Here is an example of to do it by manually deconstructing the plot and reconstructing with new annotations. I understood it as you wanted manual text annotations per plot. This (very manual) solution is based on another answer, How do I annotate p-values onto a faceted bar plots on R?, which might be exactly what you are looking for.

df <- data.frame(iris,type = c(1,2))

## Construct your plot exactly as you have already done
## Annotations are replicated.
myplot <- ggplot(df, aes(x=Species,y = Sepal.Length)) + 
    geom_boxplot() + 
    facet_grid(.~type) + 
    geom_signif(annotation = c("foo"),xmin = 1, xmax = 2,y_position = 7.5)
myplot

## Disassemble plot
myplot2 <- ggplot_build(myplot)
myplot2$data[[2]]
 x xend     y  yend annotation group PANEL shape colour textsize angle hjust vjust alpha family fontface lineheight
1 1    1 7.392 7.500        foo     1     1    19  black     3.88     0   0.5     0    NA               1        1.2
2 1    2 7.500 7.500        foo     1     1    19  black     3.88     0   0.5     0    NA               1        1.2
3 2    2 7.500 7.392        foo     1     1    19  black     3.88     0   0.5     0    NA               1        1.2
4 1    1 7.392 7.500        bar     1     2    19  black     3.88     0   0.5     0    NA               1        1.2
5 1    2 7.500 7.500        bar     1     2    19  black     3.88     0   0.5     0    NA               1        1.2
6 2    2 7.500 7.392        bar     1     2    19  black     3.88     0   0.5     0    NA               1        1.2
  linetype size
1        1  0.5
2        1  0.5
3        1  0.5
4        1  0.5
5        1  0.5
6        1  0.5
## Note there are 6 observations, 3 for each "PANEL". 
## Now, change the annotation on each "PANEL".
myplot2$data[[2]]$annotation <- c(rep("foo",3),rep("bar",3))

## Reconstruct plot
myplot3 <- ggplot_gtable(myplot2)
plot(myplot3)



来源:https://stackoverflow.com/questions/45136550/how-to-annotate-different-values-for-each-facet-bar-plot-on-r

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!