2017-10-20 5 views
-1

Sur les lignes, nous avons "fins" et sur les colonnes, nous avons des "notes".Création d'un graphique linéaire à l'aide de ggplot2

J'essaie d'utiliser ggplot2 pour tracer 14 graphiques linéaires séparés (tous superposés sur un graphique). Un pour chaque type de "but".

Sur l'axe des x seront les "grades" et sur l'axe des y seront les valeurs dans les cellules qui sont des pourcentages. Comment pourrais-je faire cela puisque les notes et les objectifs ne sont pas réellement regroupés?

enter image description here

+0

S'il vous plaît fournir des données en texte brut, pas des images, afin que les utilisateurs peuvent copier/coller. – neilfws

+0

Je suis downvote parce que nous vous avons déjà demandé plus tôt dans la même journée d'inclure des données en texte brut plutôt qu'en tant qu'image. S'il vous plaît, prenez de bonnes habitudes pour nous aider à vous aider. Si vous éditez votre question comme demandé, je remplacerai mon downvote par un upvote. – lebelinoz

Répondre

2

Je pris trois grades & but d'illustrer comment tracer les lignes sur ggplot.

ensemble de données:

df <- data.frame(purpose = c("car", "credit card", "debt consolidation"), 
       a = c(26.64, 24.81, 14.04), 
       b = c(30.44, 35.27, 27.65), 
       c = c(23.93, 24.85, 29.06)) 

Convertir le data.frame en forme empilée:

library(tidyr) 
df2 <- df %>% 
     gather(grade, val, a:c) 

graphiques linéaires de la parcelle:

ggplot(df2, aes(as.numeric(as.factor(grade)), val, colour=purpose)) + 
    geom_line() + 
    scale_x_continuous("Grades", breaks=1:3, labels=c("A", "B", "C")) 

enter image description here

2

Votre les données sont constituées de catégories discrètes (objectifs et notes), de sorte qu'un graphique linéaire n'est pas vraiment approprié car il implique une transition continue. Puisque les notes totalisent 100% dans chaque but, je pense que les barres empilées sont un meilleur choix.

library(dplyr) 
library(tidyr) 
library(ggplot2) 

df1 <- data.frame(purpose = c("car", "credit card", "debt consolidation"), 
         a = c(26.64, 24.81, 14.04), 
         b = c(30.44, 35.27, 27.65), 
         c = c(23.93, 24.85, 29.06), 
         d = c(11.66, 10.13, 16.96), 
         e = c(5.18, 3.88, 8.87), 
         f = c(1.79, 0.90, 2.80), 
         g = c(0.36, 0.16, 0.62)) 

df1 %>% 
    gather(grade, value, -purpose) %>% 
    ggplot(aes(purpose, value)) + 
    geom_col(aes(fill = grade)) + 
    scale_fill_brewer(palette = "Spectral") + 
    coord_flip() 

enter image description here