2017-08-22 7 views
1

Ich habe diesen einfachen Code, versuchen, die Figur zu plotten. Meine Absicht war es, die x-Achse geordnet als das, was ich gemacht habe, zu zeichnen, d. H. Gleich wie order_num: von 1:10 und dann 10+. Allerdings hat ggplot meine Bestellung geändert. Wie konnte ich die ursprüngliche Reihenfolge beibehalten, die ich in den Datenrahmen eingegeben habe?behalten Sie die ursprüngliche Reihenfolge bei der Verwendung von ggplot

data_order=data.frame(order_num=as.factor(c(rep(1:10),"10+")), 
    ratio=c(0.18223,0.1561,0.14177,0.1163,0.09646, 
    0.07518,0.05699,0.04,0.0345,0.02668,0.006725)) 

    ggplot(data_order,aes(x=order_num,y=ratio))+geom_bar(stat = 'identity') 

enter image description here

+1

Mögliche Duplikat [Order Bars in ggplot2 Bargraph] (https://stackoverflow.com/questions/5208679/order-bars-in-ggplot2-bar-graph) – beetroot

Antwort

1

Lesen der Daten: (. Beachten Sie die Entfernung von as.factor, werden wir es im nächsten Schritt tun Dies ist nicht zwingend!)

data_order=data.frame(order_num=c(rep(1:10),"10+"), 
         ratio=c(0.18223,0.1561,0.14177,0.1163,0.09646, 
           0.07518,0.05699,0.04,0.0345,0.02668,0.006725)) 

Sie benötigen mit dem Datenrahmen anstelle des ggplot zu arbeiten.

data_order$order_num <- factor(data_order$order_num, levels = data_order$order_num) 

Sobald Sie die Ebenen ändern, wird es wie erwartet sein.

ggplot(data_order,aes(x=order_num,y=ratio))+geom_bar(stat = 'identity') 

enter image description here

+0

dies in der Tat änderte die Reihenfolge des x-Labels. Aber das Verhältnis änderte sich nicht entsprechend. Wie Sie aus meiner ursprünglichen Figur sehen können, wenn x = 2, sollte es die zweithöchste sein. – yangyang

+0

Basierend auf Ihrem Kommentar habe ich eine Lösung gefunden: x_order_tot = Faktor (c (rep (1:10), "10 +"), levels = Faktor (c (rep (1:11)))) data_order = data.frame (order_num = x_order_tot, ratio = c (0.18223.0.1561,0.14177,0.1163,0.09646,0.07518,0.05699,0.04,0.0345,0.02668,0.006725)) – yangyang

+0

Ich bin froh, dass es Ihnen geholfen hat, zu der Lösung zu kommen. @yyangyang Bitte überprüfen Sie die aktualisierte Lösung jetzt. – Prradep

Verwandte Themen