web-dev-qa-db-fra.com

ggplot2, l'axe ne s'affiche pas après l'utilisation du thème (axis.line = element_line ())

J'essaie de dessiner ce graphique suivant en utilisant le package ggplot2, Mais d'une manière ou d'une autre l'axe n'apparaîtra pas. les tiques sont là, mais pas la ligne d'axe. J'ai utilisé la fonction theme(axis.line=element_line()), mais cela ne fonctionnerait pas.

Voici mon code:

library(ggplot2)

ggplot(data = soepl_randsub, aes(x = year, y =satisf_org, group = id)) +
    geom_point() + geom_line() +ylab("Current Life Satisfaction") +theme_bw() +
    theme(plot.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank() ) +
    theme(panel.border= element_blank()) +
    theme(axis.line = element_line(color="black", size = "2")) 

Je ne sais pas ce qui a mal tourné. Voici le tableau.

enter image description here

23
M.Zhao

Le bogue a été corrigé dans ggplot2 v2.2.0 Il n'est plus nécessaire de spécifier les lignes d'axe séparément.

Je pense que c'est un bug dans ggplot2 v2.1.0. (Voir ce rapport de bogue et celui-ci .) Une solution de contournement consiste à définir séparément les lignes de l'axe x et de l'axe y.

  library(ggplot2)

  ggplot(data = mpg, aes(x = hwy, y = displ)) + 
  geom_point() + 
  theme_bw() + 
  theme(plot.background = element_blank(),
         panel.grid.major = element_blank(),
         panel.grid.minor = element_blank() )+
  theme(panel.border= element_blank())+
  theme(axis.line.x = element_line(color="black", size = 2),
        axis.line.y = element_line(color="black", size = 2))
52
Sandy Muspratt

Vous n'avez pas besoin de spécifier séparément la taille de l'axe pour X et Y. Lorsque vous spécifiez size = "2", R considère la valeur 2 comme argument non numérique. Par conséquent, le paramètre de la ligne d'axe est par défaut à 0 taille. Utilisez cette ligne de code:

ggplot(data = mpg, aes(x = hwy, y = displ)) + geom_point() +xlab("Date")+ylab("Value of Home")+theme_bw() +theme(plot.background = element_blank(),panel.grid.major = element_blank(),panel.grid.minor = element_blank()) + theme(panel.border= element_blank()) + theme(axis.line = element_line(color="black", size = 2))

axis_line hérite de line dans R, donc la spécification de la taille est obligatoire pour les valeurs non par défaut.

3
vivek