2017-09-20 2 views
0

Je viens de représenter graphiquement un certain nombre de lignes en utilisant ggplot2 sur un graphique et je souhaite ajouter une légende au graphique. J'ai suivi la même procédure générale qu'un certain nombre de sites Web montrent et les gens ont suggéré sur ce site mais la légende ne semble tout simplement pas apparaître!RStudio ggplot2 La légende n'apparaît pas sur le graphique

Quelqu'un peut-il m'aider à faire apparaître la légende dans ce graphique?

Voici le code que j'utilisé pour la fabrication du graphique et de tenter d'ajouter une légende:

e<-ggplot(dataset,aes(y=Index_SE)) 
e1<-e+geom_smooth(aes(x=Professionals),model=lm,colour="black",show.legend=TRUE) 
e2<-e1+geom_smooth(aes(x=Health_Social),model=lm,colour="blue",show.legend=TRUE) 
e3<-e2+geom_smooth(aes(Manufacturing),model=lm,colour="green",show.legend=TRUE) 
e4<-e3+geom_smooth(aes(Machniery_Operators),model=lm,colour="red",show.legend=TRUE) 
e5<-e4+ggtitle("Types of Employment vs Index of Socioeconomic Advantage and Disadvantage") 
e6<-e5+xlab("Profession Prevelance in LGA(%)")+ylab("Index of Socioeconomic Advantage and Disadvantage") 
final<-e6+theme(legend.position=c(35,850),legend.justification=c(35,850))+scale_colour_manual(name="Legend",values=c("Professionals"="black","Health and Social"="blue","Manufacturing"="green","Machinery Operators"="red")) 

Graph outputted from code

+0

Veuillez lire le guide sur la façon de créer un exemple minimal (stackoverflow.com/help/mcve) et éditez votre question idéalement en utilisant la sortie de 'dput'. Votre problème est que vos données sont en forme large. Il doit être remodelé à long, puis il n'y aura qu'un appel à 'geom_smooth' avec un argument' group = '. Si vous pouvez publier vos données, nous pouvons vous aider. Si vous le faites de cette façon, la légende sera générée automatiquement –

Répondre

0

Comme commenté Conor Neilson, convertir le format de large à la forme de temps vous obtenez une légende avec geom_smooth dans une ligne.

Mais si, pour une raison quelconque, vous devez vraiment conserver le format large, vous pouvez spécifier la légende manuellement, en suivant l'exemple here. Notez que la couleur doit être l'intérieur chaque aes() appel, et faire correspondre les noms des valeurs de scale_colour_manual vecteur:

ggplot(dataset, aes(y = Index_SE)) + 
    geom_smooth(aes(x = Professionals, colour = "Professionals"), model=lm) + 
    geom_smooth(aes(x = Health_Social, colour = "Health and Social"), model=lm) + 
    geom_smooth(aes(x = Manufacturing, colour = "Manufacturing"), model=lm) + 
    geom_smooth(aes(x = Machniery_Operators, colour = "Machinery Operators"), model=lm) + 
    ggtitle("Types of Employment vs Index of Socioeconomic Advantage and Disadvantage") + 
    xlab("Profession Prevelance in LGA (%)") + 
    ylab("Index of Socioeconomic Advantage and Disadvantage") + 
    theme(legend.position = c(35, 850), 
     legend.justification = c(35, 850)) + 
    scale_colour_manual(name = "Legend", 
         values = c("Professionals" = "black", 
           "Health and Social" = "blue", 
           "Manufacturing" = "green", 
           "Machinery Operators" = "red")) 

J'ai aussi retiré show.legend = TRUE depuis par défaut, la légende sera affichée tant qu'il sont esthétiques cartographiées.