web-dev-qa-db-fra.com

Comment supprimer les quadrillages verticaux dans un tracé ggplot2?

Je suis en train de construire un graphique à barres pour lequel les barres suffisent comme indications de placement horizontal (x), donc je voudrais éviter de dessiner le quadrillage vertical superflu.

Je comprends comment styliser les lignes de grille mineures et majeures dans opts (), mais je ne peux pas pour la vie de moi-même comprendre comment supprimer uniquement les lignes de grille verticales.

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)
  )

À ce stade, il semble que je vais devoir supprimer tous les quadrillages, puis les réinsérer avec geom_hline (), ce qui semble être une sorte de douleur (aussi, il n'est pas tout à fait clair comment je peux trouver la tique/principales positions de quadrillage à alimenter vers geom_hline ().)

Toute réflexion sera apprécié!

64
Tarek

Essayez d'utiliser

scale_x_continuous (breaks = NULL)

Cela supprimerait tous les quadrillages verticaux ainsi que les étiquettes de coche de l'axe des x.

14
learnr

Depuis ggplot2 0.9.2, cela est devenu beaucoup plus facile à faire en utilisant des "thèmes". Vous pouvez désormais attribuer des thèmes séparément à panel.grid.major.x et panel.grid.major.y, comme illustré ci-dessous.

#   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" ) 
    )

Le résultat de cet exemple est assez laid, mais il montre comment supprimer les lignes verticales tout en préservant les lignes horizontales et les graduations de l'axe x.

136
dave.ponet

Voir l'édition au niveau de la grille pour une autre option:

https://github.com/hadley/ggplot2/wiki/Editing-raw-grid-objects-from-a-ggplot

5
James Howison

Cela ne vous laisse que les points de données:

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())
4
M0M