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

前端 未结 5 846
无人及你
无人及你 2020-12-01 04:14

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 unde

相关标签:
5条回答
  • 2020-12-01 04:31

    Option 1:

    data_df <- data.frame(x = 1:10, y = c(3,5,2,5,6,2,7,6,5,4))
    
    ggplot(data_df, aes(x, y)) +
      geom_bar(stat = 'identity') +
      theme(panel.background = element_rect(fill = "white"))
    

    Option 2:

    data_df <- data.frame(x = 1:10, y = c(3,5,2,5,6,2,7,6,5,4))
        
    ggplot(data_df, aes(x, y)) +
          geom_bar(stat = 'identity') +
          theme(
            panel.grid.major.x = element_blank(),
            panel.grid.minor.x = element_blank(),
            panel.grid.major.y = element_blank(),
            panel.grid.minor.y = element_blank()
          )
    
    0 讨论(0)
  • 2020-12-01 04:39

    Try using

    scale_x_continuous(breaks = NULL)

    This would remove all the vertical gridlines as well as x-axis tickmark labels.

    0 讨论(0)
  • 2020-12-01 04:45

    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.

    0 讨论(0)
  • 2020-12-01 04:46

    This leaves you only with the data points:

    ggplot(out, aes(X1, X2)) + 
        geom_point() + 
        scale_x_continuous(breaks = NULL) + 
        scale_y_continuous(breaks = NULL) + 
        opts(panel.background = theme_blank()) + 
        opts(axis.title.x = theme_blank(), axis.title.y = theme_blank())
    
    0 讨论(0)
  • 2020-12-01 04:48

    Copying my answer from a related thread,

    For people looking this up in 2020, I have found a solution in the form of the removeGrid function from the ggExtra library here rdrr.io > removeGrid

    I have tested it to be working with ggplot2 version 3.3.0 and ggExtra version 0.9, giving me axis ticks without the gridlines.

    0 讨论(0)
提交回复
热议问题