Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I suppress the vertical gridlines in a ggplot2 plot?

Tags:

r

ggplot2

I am building a bar chart for which bars suffice as indications of horizontal (x) placement, so I'd like to avoid drawing the superfluous vertical gridlines.

I understand how to style the minor and major gridlines in opts(), but I can't for the life of me figure out how to suppress just the vertical gridlines.

library(ggplot2)  data <- data.frame(x = 1:10, y = c(3,5,2,5,6,2,7,6,5,4))  ggplot(data, aes(x, y)) +   geom_bar(stat = 'identity') +   opts(     panel.grid.major = theme_line(size = 0.5, colour = '#1391FF'),     panel.grid.minor = theme_line(colour = NA),     panel.background = theme_rect(colour = NA),     axis.ticks = theme_segment(colour = NA)   ) 

At this point, it's looking like I'm going to have to suppress all of the gridlines and then draw them back in with geom_hline(), which seems like kind of a pain (also, it's not entirely clear how I can find the tick/major gridline positions to feed to geom_hline().)

Any thoughts would be appreciated!

like image 851
Tarek Avatar asked Apr 20 '10 19:04

Tarek


People also ask

How do I get rid of grid lines in R?

To remove a particular panel grid, use element_blank() for the corresponding theme argument. For example to remove the major grid lines for the x axis, use this: p + theme(panel. grid.

How do you add a vertical line in a graph in ggplot2?

To create a vertical line using ggplot2, we can use geom_vline function of ggplot2 package and if we want to have a wide vertical line with different color then lwd and colour argument will be used. The lwd argument will increase the width of the line and obviously colour argument will change the color.

How do I add a horizontal line in ggplot2?

Example: To add the horizontal line on the plot, we simply add geom_hline() function to ggplot2() function and pass the yintercept, which basically has a location on the Y axis, where we actually want to create a vertical line.


1 Answers

As of ggplot2 0.9.2, this has become much easier to do using "themes." You can now assign themes separately to panel.grid.major.x and panel.grid.major.y, as demonstrated below.

#   simulate data for the bar graph data <- data.frame( X = c("A","B","C"), Y = c(1:3) )      #   make the bar graph ggplot( data  ) +     geom_bar( aes( X, Y ) ) +     theme( # remove the vertical grid lines            panel.grid.major.x = element_blank() ,            # explicitly set the horizontal lines (or they will disappear too)            panel.grid.major.y = element_line( size=.1, color="black" )      ) 

The result of this example is quite ugly looking, but it demonstrates how to remove the vertical lines while preserving the horizontal lines and x-axis tick-marks.

like image 74
dave.ponet Avatar answered Sep 28 '22 21:09

dave.ponet