Search code examples
rgridbar-chartlimit

How to set limits of grid in barplot?


I am trying to put grids in my barplots, but they appear in front of the data and not in the background. I tried to fix this using

panel.first = grid()

As for the data I am trying to plot, the first column consists of the year numbers (2014-2021) and the second columns are the corresponding values (all vector classes are numeric). When trying to plot using the following code:

par(mfrow=c(1,2))

barplot(mean_trend[,2],names.arg = mean_trend[,1],col="skyblue",ylim = c(0.1,95),cex=0.8,cex.names=0.85,las=2,cex.lab=0.85,lwd=1.5,panel.first = grid())
mtext(side=2,line=2.3, "Average amount in mm", font=2, cex=0.8)
box(lwd=1.5)

barplot(freq_trend[,2],names.arg = freq_trend[,1],col="skyblue",ylim = c(2,4500),cex=0.85,cex.names=0.85,las=2,cex.lab=0.85,lwd=1.5,panel.first = grid())
box(lwd=1.5)
mtext(side=2,line=3.3, "Average flood frequency", font=2, cex=0.8)

I obtain the following resultenter image description here

As you can see, the grid is now behind the plotted data, but exceeds the box/plot limits. How can I fix this?

Kind regards


Solution

  • As you didn't add a data mean_trend - I give an example with other data.

    About add and others arguments - you can read ?barplot

    # One row, two columns
    par(mfrow = c(1, 2))
    
    #PLOT1
    barplot(table(mtcars$cyl), main = "PLOT 1", col = c("yellow", "green", "red"), ylim = c(0, 15))
    grid(nx = NULL, ny = NULL, lwd = 1, lty = 1, col = "gray")
    barplot(table(mtcars$cyl), col = c("yellow", "green", "red"), ylim = c(0, 15), add = TRUE)
     
    #PLOT2
    barplot(table(mtcars$cyl), main = "PLOT 2", col = c("yellow", "green", "red"), ylim = c(0, 15))
    grid(nx = NULL, ny = NULL, lwd = 1, lty = 1, col = "gray")
    barplot(table(mtcars$cyl), col = c("yellow", "green", "red"), ylim = c(0, 15), add = TRUE)
    

    enter image description here