0

It is a facet_wrap plot with two grouped bar graphs. I had my questions and code attached in the text below.

enter image description here

Q1: how to annotate triple asterisks at designated positions (better it can locate the position automatically without my calculation/specification) as drawn in the plot? Tried but did not work:

ann_text1=data.frame(ligand=c(2), uptake=c(24), kd=factor("p", levels=c("p","q")))
tp=t+geom_text(data=ann_text1,label="***", size=8)

Q2: how to use greek letter (beta) in the strip title? Tried to integrate expression argument in the labels = but did not work.

t$cell=factor(t$cell, levels = unique(t$cell), labels = c("WT","beta-DKO"))

Here is the complete version of code I tried. Please navigate for the input file through this link.

library(ggplot2)
library(Hmisc)
library(gridExtra)
library(grid)

t=read.csv(file.choose(), header = TRUE)
t$ligand = factor(t$ligand, levels = unique(t$ligand))
t$kd=factor(t$kd, levels = unique(t$kd))
t$cell=factor(t$cell, levels = unique(t$cell), labels = c("WT","beta-DKO"))

tbar=ggplot(t, aes(kd, uptake, fill=ligand)) +
  stat_summary(fun.y = mean, geom = "bar", position="dodge", color = "black", size=0.3, width = 0.6) +
  stat_summary(fun.data = mean_se, geom = "errorbar", position = position_dodge(width = 0.6), size=0.3, width = .2) +
  scale_fill_manual(name="ligand", labels=c("-L", "+L"), values=c("gray20", "gray80"))+
  theme_bw()+
  scale_y_continuous(expand = c(0,0), limit = c(0, 120), breaks = seq(0, 110, 20))+
  ylab("% of T")+
  facet_wrap(~cell, nrow=1)+
  theme(legend.direction="horizontal",legend.position=c(0.88,0.92))+
  theme(legend.text=element_text(size=9))+
  theme(legend.key.size=unit(0.25,"cm"))
Li-Pin Juan
  • 1,156
  • 1
  • 13
  • 22

1 Answers1

0

You can add a stat_summary(geom="text") as per this thread: Annotation above bars:

library(ggplot2)
library(Hmisc)
library(gridExtra)
library(grid)

t=read.csv("https://dl.dropboxusercontent.com/u/1204710/test.csv", header = TRUE)
t$ligand = factor(t$ligand, levels = unique(t$ligand))
t$kd=factor(t$kd, levels = unique(t$kd))
t$cell=factor(t$cell, levels = unique(t$cell), labels = c("WT","beta-DKO"))
## parametrise dodging width; add vertical shift to '***' label
width <- 0.6
vshift <- 5
dodgewidth <- position_dodge(width=width)
## identify bars where '***' label has to be placed using a factor
t$mylabel <- ""
t$mylabel[with(t, ligand=="y" & cell=="WT" & kd=="p")] <- "***"
t$mylabel[with(t, ligand=="y" & cell=="beta-DKO" & kd=="q")] <- "***"
t$mylabel <- factor(t$mylabel)

tbar <- ggplot(t, aes(kd, uptake, fill=ligand)) +
    stat_summary(fun.y = mean, geom = "bar", position="dodge", color = "black", size=0.3, width = width) +
    stat_summary(fun.y = function(v) mean(v)+vshift, geom = "text", position=dodgewidth, aes(label=mylabel)) +
    stat_summary(fun.data = mean_se, geom = "errorbar", position = position_dodge(width = width), size=0.3, width = .2) +
    scale_fill_manual(name="ligand", labels=c("-L", "+L"), values=c("gray20", "gray80"))+
    theme_bw()+
    scale_y_continuous(expand = c(0,0), limit = c(0, 120), breaks = seq(0, 110, 20))+
    ylab("% of T")+
    facet_wrap(~cell, nrow=1)+
    theme(legend.direction="horizontal",legend.position=c(0.88,0.92))+
    theme(legend.text=element_text(size=9))+        
    theme(legend.key.size=unit(0.25,"cm"))

print(tbar)
Community
  • 1
  • 1
renato vitolo
  • 1,744
  • 11
  • 16