2010-04-20 4 views
47

Je construis un graphique à barres pour lequel les barres suffisent comme indications de placement horizontal (x), donc je voudrais éviter de dessiner le quadrillage vertical superflu.Comment supprimer le quadrillage vertical dans un tracé ggplot2?

Je comprends comment styliser le quadrillage mineur et majeur dans opts(), mais je ne peux pas, pour la vie de moi, comprendre comment supprimer seulement le quadrillage vertical.

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 est à la recherche que je vais devoir supprimer tous les quadrillages, puis les retirer avec geom_hline(), ce qui semble être une sorte de douleur (aussi, il est pas tout à fait Décidez comment je peux trouver les positions tick/gridline majeures à alimenter à geom_hline().)

Toutes les pensées seraient appréciées!

Répondre

11

Essayez d'utiliser

scale_x_continuous (breaks = NULL)

Cela supprimerait toutes les lignes verticales ainsi que les étiquettes de tickmark axe x.

+4

Cela l'a fait, mais maintenant, comme vous l'avez noté, je n'ai pas les étiquettes de l'axe X, dont j'ai besoin - des idées sur la façon de les réécrire? – Tarek

+1

geom_text (aes (label = x, y = -5)) devrait fonctionner – learnr

+17

La nouvelle version dit, 'S'il vous plaît utilisez breaks = NULL pour supprimer les ruptures dans l'échelle. (Déconseillé, utilisé en dernier dans la version 0.8.9) ' –

4

Cela vous laisse seulement avec 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()) 
95

Au ggplot2 0.9.2, cela est devenu beaucoup plus facile à faire en utilisant "thèmes". Vous pouvez maintenant assigner des thèmes séparément à panel.grid.major.x et panel.grid.major.y, comme démontré 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 laide à la recherche, mais il montre comment supprimer les lignes verticales tout en préservant les lignes horizontales et x-axes graduations.

Questions connexes