2017-06-07 1 views
0

Ich habe einen kleinen Datensatz und ich möchte es mit einem Liniendiagramm zeichnen:ggplot: Fehler: Ästhetik muß entweder Länge 1 oder die gleiche wie die Daten (10): x, y, Gruppe

> Gain 
    quantile Positives Total_Examples Positive_Prevalence  Lift Cumsum_Positives 
1:  (0, ]   1    1     1 1.428571  0.1428571 
2: (1.9,2.8]   1    1     1 1.428571  0.2857143 
3: (2.8,3.7]   1    1     1 1.428571  0.4285714 
4: (3.7,4.6]   1    1     1 1.428571  0.5714286 
5: (4.6,5.5]   1    1     1 1.428571  0.7142857 
6: (5.5,6.4]   1    1     1 1.428571  0.8571429 
7: (6.4,7.3]   1    1     1 1.428571  1.0000000 
8: (7.3,8.2]   0    1     0 0.000000  1.0000000 
9: (8.2,9.1]   0    1     0 0.000000  1.0000000 
10: (9.1,10]   0    1     0 0.000000  1.0000000 

Mein Code ist folgende:

ggplot(Gain) + 
    geom_area(aes(x = quantile, y = Cumsum_Positives, group = 1), color = "red", fill = "red", alpha = 0.5, size = 2) + 
    theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
    geom_line(aes(x = quantile, y = seq(0, 1 , by = 0.1) , group = 1), color = "blue", size = 2, alpha = 0.5) + 
    scale_x_discrete(name ="% of the Data Set", 
        labels=c("0%", "10%","20%","30%", "40%", "50%", "60%","70%","80%", "90%", "100%")) 

Allerdings bekomme ich eine Fehlermeldung:

Error: Aesthetics must be either length 1 or the same as the data (10): x, y, group 

ich habe auf diese Art von Fehler lesen Einträge über und normalerweise bedeutet der Fehler, dass die Variablen, die innerhalb der Ästhetik aufgerufen werden, nicht im ursprünglichen Datenrahmen vorhanden sind. Aber das ist hier nicht der Fall.

Ich habe auch versucht, diesen Code, aber es gibt die gleiche Fehlermeldung auch:

Gain$index <- row.names(Gain) 


ggplot(Gain) + 
    geom_area(aes(x = index, y = Cumsum_Positives, group = 1), color = "red", fill = "red", alpha = 0.5, size = 2) + 
    theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
    geom_line(aes(x = quantile, y = seq(0, 1 , by = 0.1) , group = 1), color = "blue", size = 2, alpha = 0.5) + 
    scale_x_discrete(name ="% of the Data Set", 
        labels=c("0%", "10%","20%","30%", "40%", "50%", "60%","70%","80%", "90%", "100%")) 

Ihr Rat geschätzt wird.

Antwort

1

Ihre Daten sind mit einer Länge von 10, während die y Ästhetik in geom_line der Länge ist 11.

seq(0, 1 , by = 0.1) 
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 

Versuchen seq(0,0.9,by=0.1) oder seq(0.1,1,by=0.1)

0

Wenn Ihr Ziel aus eine Linie zu ziehen ist (x = 0 , y = 0) bis (x = 0,9, y = 1), können Sie auch geom_line durch geom_abline ersetzen:

geom_abline(slope = 1/9, 
      intercept = -0.109, 
      color = "blue", 
      size = 2, 
      alpha = 0.5) + 
Verwandte Themen