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
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 [[alternative HTML version deleted]]
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