3

I have the following dataset with the following code that produces the graph I want in ggplot2. I would like to lable the PTIDs on the x axis by group so that it shows the ptids how they are already displayed but also with what group they are in.

     PTID      Group    variable   value
1   subject1    Group 1  Bio.V3.B   43
2   subject2    Group 1  Bio.V3.B   7410
3   subject3    Group 2  Bio.V3.B   13227
4   subject4    Group 2  Bio.V3.B   4832
5   subject5    Group 3  Bio.V3.B   205
6   subject6    Group 3  Bio.V3.B   24899
1   subject1    Group 1  Bio.V3.C   496
2   subject2    Group 1  Bio.V3.C   5932
3   subject3    Group 2  Bio.V3.C   24093
4   subject4    Group 2  Bio.V3.C   85
5   subject5    Group 3  Bio.V3.C   9503
6   subject6    Group 3  Bio.V3.C   18249

ggplot(data=meltedwk28v3, aes(x=PTID, y=value, fill=variable)) + 
    geom_bar(width= .5, colour="black", stat="identity",  #barwidth
             position=position_dodge(width=.7),  #gapwidth
             size=.2) +                        # Thinner lines
    scale_fill_hue(name="Bio-V3 Clade") +      # Set legend title
    xlab("PTID") + ylab("MFI") + # Set axis labels
    ggtitle("Wk28 Bio-V3 MFI") +  # Set title
    theme_classic() + theme(axis.text.x = element_text(angle=90,     hjust=0, vjust=0)) #Themes

Thanks!

1 Answers1

1

One possibility is to use the interaction between 'PTID' and 'Group' as x variable:

ggplot(data = df, aes(x = interaction(PTID, Group, sep = " "), y = value, fill = variable)) + 
  geom_bar(width= 0.5, colour="black", stat = "identity",
           position = position_dodge(width = 0.7),
           size = 0.2) +
  xlab("PTID") + ylab("MFI") +
  ggtitle("Wk28 Bio-V3 MFI") +
  theme_classic() +
  theme(axis.text.x = element_text(angle = 90, hjust = 0, vjust = 0))

enter image description here

Henrik
  • 65,555
  • 14
  • 143
  • 159
  • For more sophisticated labelling, see e.g. [**here**](http://stackoverflow.com/questions/18165863/ggplot2-labels-of-grouping-values-below-the-plot?rq=1) – Henrik Jan 11 '15 at 21:25
  • @AwesomeeExpress, it might be a good idea to accept and upvote this answer if you found it useful. – Marat Talipov Jan 12 '15 at 04:56