Modifying Graph Axis Style using ggplot in R Studio

Modifying Graph Axis Style using ggplot in R Studio


This is a method for adjusting the axis formatting of a graph drawn using ggplot() in R Studio. I will create a simple dataset as shown below.

genotype= c("A","B","C")
treatment= c("tr1", "tr2")
yield= c(-0.124, -0.083, -0.07, 0.130, 0.216, 0.182)
dataA= data.frame (genotype, treatment, yield)
dataA

  genotype treatment      y
1        A       tr1 -0.124
2        B       tr2 -0.083
3        C       tr1 -0.070
4        A       tr2  0.130
5        B       tr1  0.216
6        C       tr2  0.182

Next, I will use this data to create a bar graph.

library(ggplot2)
ggplot (data=dataA, aes(x=genotype, y=yield, fill=treatment)) +
  geom_bar (stat="identity", position= position_dodge(0.9)) +
  scale_fill_manual("Treatment", values= c("tr1"="darkred", "tr2"="cadetblue")) +
  geom_hline(yintercept=0, linetype="dashed", linewidth=1, color="red") +
  labs(x="Genotype", y="Yield") +
  theme_classic(base_size=18, base_family="serif") +
  theme(legend.position="right",
        legend.title=element_text(family="serif", face="plain",
                                 size=18, color= "black"),
        legend.key=element_rect(color="white", fill="white"),
        legend.text=element_text(family="serif", face="plain",
                                 size=18, color= "black"),
        legend.background=element_rect(fill="white"),
        axis.line=element_line(linewidth=0.5, colour="black"))

I have created the bar graph as shown above. Now, let’s proceed to adjust the axis formatting of the graph.



1) Setting Axis Range

I will adjust the range of the y-axis values. I want to set the range from -1 to 1 with increments of 0.2. I will use the code scale_y_continuous().

library(ggplot2)
ggplot (data=dataA, aes(x=genotype, y=yield, fill=treatment)) +
  geom_bar (stat="identity", position= position_dodge(0.9)) +
  scale_fill_manual("Treatment", values= c("tr1"="darkred", "tr2"="cadetblue")) +
  geom_hline(yintercept=0, linetype="dashed", linewidth=1, color="red") +
  scale_y_continuous(breaks= seq(-1, 1, 0.2), limits= c(-1, 1)) +
  labs(x="Genotype", y="Yield") +
  theme_classic(base_size=18, base_family="serif") +
  theme(legend.position="right",
        legend.title=element_text(family="serif", face="plain",
                                 size=18, color= "black"),
        legend.key=element_rect(color="white", fill="white"),
        legend.text=element_text(family="serif", face="plain",
                                 size=18, color= "black"),
        legend.background=element_rect(fill="white"),
        axis.line=element_line(linewidth=0.5, colour="black"))


2) Setting The Axis Units to %

I would like to set the unit of the y-axis values to %. I will include labels= scales::percent in scale_y_continuous().

library(ggplot2)
ggplot (data=dataA, aes(x=genotype, y=yield, fill=treatment)) +
  geom_bar (stat="identity", position= position_dodge(0.9)) +
  scale_fill_manual("Treatment", values= c("tr1"="darkred", "tr2"="cadetblue")) +
  geom_hline(yintercept=0, linetype="dashed", linewidth=1, color="red") +
  scale_y_continuous(breaks= seq(-1, 1, 0.2), limits= c(-1, 1), labels= scales::percent) +
  labs(x="Genotype", y="Yield") +
  theme_classic(base_size=18, base_family="serif") +
  theme(legend.position="right",
        legend.title=element_text(family="serif", face="plain",
                                 size=18, color= "black"),
        legend.key=element_rect(color="white", fill="white"),
        legend.text=element_text(family="serif", face="plain",
                                 size=18, color= "black"),
        legend.background=element_rect(fill="white"),
        axis.line=element_line(linewidth=0.5, colour="black"))


3) Changing Axis Title Names

Now, I would like to change the x-axis name to “Cultivar” and the y-axis name to “Responsiveness.” Inside labs(), I will input the axis names I want to change.

library(ggplot2)
ggplot (data=dataA, aes(x=genotype, y=yield, fill=treatment)) +
  geom_bar (stat="identity", position= position_dodge(0.9)) +
  scale_fill_manual("Treatment", values= c("tr1"="darkred", "tr2"="cadetblue")) +
  geom_hline(yintercept=0, linetype="dashed", linewidth=1, color="red") +
  scale_y_continuous(breaks= seq(-1, 1, 0.2), limits= c(-1, 1), labels= scales::percent) +
  labs(x="Cultivar", y="Responsiveness") +
  theme_classic(base_size=18, base_family="serif") +
  theme(legend.position="right",
        legend.title=element_text(family="serif", face="plain",
                                 size=18, color= "black"),
        legend.key=element_rect(color="white", fill="white"),
        legend.text=element_text(family="serif", face="plain",
                                 size=18, color= "black"),
        legend.background=element_rect(fill="white"),
        axis.line=element_line(linewidth=0.5, colour="black"))


4) Changing Axis Title Font Size/Color

Now, I would like to change the font size and color of these modified axis titles.

library(ggplot2)
ggplot (data=dataA, aes(x=genotype, y=yield, fill=treatment)) +
  geom_bar (stat="identity", position= position_dodge(0.9)) +
  scale_fill_manual("Treatment", values= c("tr1"="darkred", "tr2"="cadetblue")) +
  geom_hline(yintercept=0, linetype="dashed", linewidth=1, color="red") +
  scale_y_continuous(breaks= seq(-1, 1, 0.2), limits= c(-1, 1), labels= scales::percent) +
  labs(x="Cultivar", y="Responsiveness") +
  theme_classic(base_size=18, base_family="serif") +
  theme(axis.title.x= element_text (size=18, color="blue"),
        axis.title.y= element_text (size=18, color="blue"),
        legend.position="right",
        legend.title=element_text(family="serif", face="plain",
                                 size=18, color= "black"),
        legend.key=element_rect(color="white", fill="white"),
        legend.text=element_text(family="serif", face="plain",
                                 size=18, color= "black"),
        legend.background=element_rect(fill="white"),
        axis.line=element_line(linewidth=0.5, colour="black"))


5) Changing Axis Text Font Size/Color

Now, I’d like to change the axis text. I will increase the size slightly and set the color to red.

library(ggplot2)
ggplot (data=dataA, aes(x=genotype, y=yield, fill=treatment)) +
  geom_bar (stat="identity", position= position_dodge(0.9)) +
  scale_fill_manual("Treatment", values= c("tr1"="darkred", "tr2"="cadetblue")) +
  geom_hline(yintercept=0, linetype="dashed", linewidth=1, color="red") +
  scale_y_continuous(breaks= seq(-1, 1, 0.2), limits= c(-1, 1), labels= scales::percent) +
  labs(x="Cultivar", y="Responsiveness") +
  theme_classic(base_size=18, base_family="serif") +
  theme(axis.title.x= element_text (size=18, color="blue"),
        axis.title.y= element_text (size=18, color="blue"),
        axis.text.x= element_text (size=18, color="red"),
        axis.text.y= element_text (size=18, color="red"),
        legend.position="right",
        legend.title=element_text(family="serif", face="plain",
                                 size=18, color= "black"),
        legend.key=element_rect(color="white", fill="white"),
        legend.text=element_text(family="serif", face="plain",
                                 size=18, color= "black"),
        legend.background=element_rect(fill="white"),
        axis.line=element_line(linewidth=0.5, colour="black"))


6) Changing Axis Title and Text Font Type

I will change the font type of the graph’s title and text.

library(ggplot2)
ggplot (data=dataA, aes(x=genotype, y=yield, fill=treatment)) +
  geom_bar (stat="identity", position= position_dodge(0.9)) +
  scale_fill_manual("Treatment", values= c("tr1"="darkred", "tr2"="cadetblue")) +
  geom_hline(yintercept=0, linetype="dashed", linewidth=1, color="red") +
  scale_y_continuous(breaks= seq(-1, 1, 0.2), limits= c(-1, 1), labels= scales::percent) +
  labs(x="Cultivar", y="Responsiveness") +
  theme_classic(base_size=18, base_family="serif") +
  theme(axis.title.x= element_text (family="serif", size=18, color="blue"),
        axis.title.y= element_text (family="serif", size=18, color="blue"),
        axis.text.x= element_text (family="serif", size=18, color="red"),
        axis.text.y= element_text (family="serif", size=18, color="red"),
        legend.position="right",
        legend.title=element_text(family="serif", face="plain",
                                 size=18, color= "black"),
        legend.key=element_rect(color="white", fill="white"),
        legend.text=element_text(family="serif", face="plain",
                                 size=18, color= "black"),
        legend.background=element_rect(fill="white"),
        axis.line=element_line(linewidth=0.5, colour="black"))
Code summary
https://github.com/agronomy4future/r_code/blob/main/Modifying_Graph_Axis_Style_using_ggplot_in_R_Studio.ipynb


Leave a Reply

If you include a website address in the comment section, I cannot see your comment as it will be automatically deleted and will not be posted. Please refrain from including website addresses.