Here is the solution inspired by this post
https://stackoverflow.com/questions/18165863/multirow-axis-labels-with-nested-grouping-variables
> data$Female <- factor(data$Female, levels
c("F1","F2","F3","F4","F5","F6","F7","F8","F9","F10"))
>
ggplot(data,aes(x=family,y=offs.surv.perct,fill=treat))+geom_bar(stat="identity",
position="dodge")+
geom_text(aes(label = MID), angle=90)+
facet_wrap(~Female, strip.position = "bottom", scales =
"free_x",nrow=1)+
theme(panel.spacing = unit(0, "lines"),
strip.background = element_blank(),
strip.placement = "outside")
On Fri, Sep 20, 2019 at 11:51 AM Moshiur Rahman <mrahmankufmrt at
gmail.com>
wrote:
> Thanks Rishi,
>
> Please find attached the data herewith.
>
>
>
> On Fri, Sep 20, 2019 at 5:48 PM ??? ( ??? / rIsHi ) <
> rishi.dasroy at gmail.com> wrote:
>
>> There are no attached data .
>>
>> On Fri, Sep 20, 2019 at 11:40 AM Moshiur Rahman <mrahmankufmrt at
gmail.com>
>> wrote:
>>
>>> Dear ggplot2 experts,
>>>
>>> I'm struggling to make a plot having family id in x-axis and
female id
>>> below that family id where each 4 families have a single female id.
>>>
>>> I also need to add male id on top of each bar which I can do before
>>> grid.arrange, but fail after doing it. So, any suggestions?
>>>
>>> Please find below my codes and help me to complete it perfectly.
>>> #data
>>> data <- read.table("R-help_ggplot2.csv", header=TRUE,
sep=",")
>>> names(data)
>>> #packages
>>> library(ggplot2)
>>> library(grid)
>>> library(gridExtra)
>>> library(scales)
>>> library(ggpubr)
>>> #plot codes
>>> p1 >>>
ggplot(data,aes(x=factor(family),y=offs.surv.perct,fill=factor(treat)))+
>>> geom_bar(stat="identity",
position="dodge")+
>>> #facet_wrap(~ Female)+
>>> geom_bar(stat="identity", position="dodge",
colour="black",
>>> show.legend= TRUE) + # show_guide = TRUE gives legend boarder
>>> #geom_hline(yintercept=15, size=0.5, linetype = 2)+ ### middle
line
>>> scale_fill_manual(values=c("grey",
"white")) + # grey80 is closer to
>>> white than black
>>> xlab("Family") +
>>> ylab (expression(paste("Offspring survival rate
(%)"))) +
>>> #coord_cartesian(xlim=c(0,40), ylim=c(0,60),
clip="off")+
>>> scale_y_continuous(expand = c(0, 0), limits = c(0, 60))+
>>> theme(legend.title = element_text(colour="black",
size=12))+
>>> theme(legend.text = element_text(colour="black",
size=11))+
>>> theme(legend.background = element_blank())+
>>> theme(legend.key = element_blank())+
>>> theme(legend.box.background = element_blank())+
>>> theme(legend.key.size = unit(2,
"mm"),legend.key.width >>> unit(0.5,"cm"))+
>>> theme(legend.position=c(0.05,0.9),legend.direction
>>> ="vertical",legend.box = "vertical")+ # add
legend on top
>>> theme(panel.background = element_rect(fill =
"transparent"))+
>>> theme(axis.line = element_line(colour >>>
"black"),axis.text.x=element_text(size=10,
>>> colour="black"),axis.text.y=element_text(size=10,
colour="black"),
>>> axis.title.y = element_text(size=12, colour >>>
"black",margin=margin(0,5,0,0)),
>>> axis.title.x = element_blank(),
>>> strip.text.x = element_blank(),# remove top level title
(high and
>>> low)
>>> strip.background = element_blank(),# remove top level
background
>>> panel.grid.major = element_blank(),# remove grid line
within the
>>> plot
>>> panel.grid.minor = element_blank(),
>>> panel.border = element_blank())
>>> p1
>>>
>>> ### legend correction
>>> p2<- p1 + guides(fill = guide_legend(title="Fertilization
>>> group",keywidth >>> 1,keyheight = 1,
>>> title.theme = element_text(size=12,
colour >>> "black", angle = 0)))+
>>> theme(legend.text = element_text(size = 12, colour =
"black", angle >>> 0))
>>>
>>> p2
>>>
>>> ###plot margins
>>> p3<-p2+theme(plot.margin = unit(c(1,1,1.7,1),
"lines"))
>>> p3
>>>
>>> #x-axis label
>>> p4<-grid.arrange(
>>> p3,
>>> bottom = textGrob(
>>> "Family and female number",
>>> gp = gpar(fontsize = 12, cex=1), #fontface = "bold",
>>> vjust = 0.5, hjust = 0.5,x = 0.52))
>>>
>>> # annotation (NOT WORKING)
>>> p5<-p4+annotate("text", label = "M1", x = 1,
y = 25.03, fontface = 1,
>>> size=3,angle = 90)
>>> p5
>>> p6<-p5+annotate("text", label = "M2", x = 2,
y = 18.37, fontface = 1,
>>> size=3,angle = 90)
>>> p6
>>> p7<-p6+annotate("text", label = "M3", x = 3,
y = 21.7, fontface = 1,
>>> size=3,angle = 90)
>>> p7
>>> p8<-p7+annotate("text", label = "M1-2-3", x
= 4, y = 19.1, fontface= 1,
>>> size=3,angle = 90)
>>> p8
>>> Fig1.1<-p8+annotate("segment", size=0.3,
x=c(1,1,4),xend=c(1,4,4),
>>> y= c(26,28,28), yend=c(28,28,21))+
>>> annotate("text",x=2.45,y=29.5,fontface = 1,
size=3,angle >>> 90,label=c("F1"))
>>>
>>> Fig1.1
>>>
>>> Please find attached also my data.
>>>
>>> Any assistance will be highly appreciated.
>>>
>>> Regards,
>>>
>>> Moshi
>>>
>>>
>>> JSPS Postdoctoral Fellow
>>> Laboratory of Population Biology
>>> Department of Marine Biosciences
>>> Graduate School of Marine Science and Technology
>>> Tokyo University of Marine Science and Technology
>>> 4-5-7 Konan, Minato-ku, Tokyo 108-8477, Japan
>>> Mobile: 050-6874-9072
>>> ______________________________________________
>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more,
see
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> PLEASE do read the posting guide
>>> http://www.R-project.org/posting-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>
>>
>> --
>>
>>
>>
>> With regards
>> Rishi Das Roy
>>
>
>
> --
> Md. Moshiur Rahman, PhD
>
> JSPS Postdoctoral Fellow
> Laboratory of Population Biology
> Department of Marine Biosciences
> Graduate School of Marine Science and Technology
> Tokyo University of Marine Science and Technology
> 4-5-7 Konan, Minato-ku, Tokyo 108-8477, Japan
> Mobile: 050-6874-9072
>
> .........................
>
> Professor
> Fisheries and Marine Resource Technology Discipline
> Khulna University, Khulna - 9208
> BANGLADESH.
> Google scholar:
> https://scholar.google.com.au/citations?user=uElrJSsAAAAJ&hl=en
> ResearchGate: https://www.researchgate.net/profile/Md_Moshiur_Rahman2
> ORCID: https://orcid.org/my-orcid
>
--
With regards
Rishi Das Roy
[[alternative HTML version deleted]]