2016-07-25 11 views
0

Wenn ich die folgende Zeichnung habe, wie kann ich das Umordnen von Daten vor dem Plotten verbieten? Ich möchte die gleiche Reihenfolge der Daten im Diagramm beibehalten wie im Datenrahmen, den ich zu zeichnen versuche. Jede Hilfe ist sehr geschätztErneutes Umsetzen von data.frame vor dem Plotten verbieten

df <- data.frame(derma=c(1:14), prevalence=c(1:14)) 

df$derma = c("Spotted melanosis","Diffuse melanosis on palm","Spotted melanosis on trunk","Diffuse melanosis on trunk","Leuco melanosis","Whole body melanosis","Spotted keratosis on palm","Diffuse keratosis on palm","Spotted keratosis on sole","Diffuse keratosis on sole","Dorsal keratosis","Chronic bronchitis","Liver enlargement","Carcinoma") 
df$prevalence = c(16.2,78.6,57.3,20.6,17,8.4,35.4,23.5,66,52.8,39,6,2.4,1) 

g <- ggplot(data=df, aes(x=derma, y=prevalence)) + geom_bar(stat="identity") + coord_flip() 

print(g) 

enter image description here

+0

Lesen Sie über Faktor. Siehe - http://StackOverflow.com/Questions/5208679 – zx8754

Antwort

0

Wie in den Kommentaren erwähnt, können Sie dies tun, indem der Bestellung der Faktor variabel. Unten ist der Code Beispiel:

df <- data.frame(derma=c(1:14), prevalence=c(1:14)) 

df$derma = c("Spotted melanosis","Diffuse melanosis on palm","Spotted melanosis on trunk","Diffuse melanosis on trunk","Leuco melanosis","Whole body melanosis","Spotted keratosis on palm","Diffuse keratosis on palm","Spotted keratosis on sole","Diffuse keratosis on sole","Dorsal keratosis","Chronic bronchitis","Liver enlargement","Carcinoma") 
df$prevalence = c(16.2,78.6,57.3,20.6,17,8.4,35.4,23.5,66,52.8,39,6,2.4,1) 
df$derma <- factor(df$derma, levels = df$derma, ordered=TRUE) 

g <- ggplot(data=df, aes(x=derma, y=prevalence)) + geom_bar(stat="identity") + coord_flip() 

print(g) 

Sie können mit den Etiketten herumzuspielen und es den Auftrag geben, dass Sie in Ihrem Grundstück möchten. Beispielsweise können Sie die Elemente im Diagramm umkehren, indem Sie einfach die Funktion rev() verwenden. Unten ist der Code für das gleiche:

df <- data.frame(derma=c(1:14), prevalence=c(1:14)) 

df$derma = c("Spotted melanosis","Diffuse melanosis on palm","Spotted melanosis on trunk","Diffuse melanosis on trunk","Leuco melanosis","Whole body melanosis","Spotted keratosis on palm","Diffuse keratosis on palm","Spotted keratosis on sole","Diffuse keratosis on sole","Dorsal keratosis","Chronic bronchitis","Liver enlargement","Carcinoma") 
df$prevalence = c(16.2,78.6,57.3,20.6,17,8.4,35.4,23.5,66,52.8,39,6,2.4,1) 
df$derma <- factor(df$derma, levels = rev(df$derma), ordered=TRUE) 

g <- ggplot(data=df, aes(x=derma, y=prevalence)) + geom_bar(stat="identity") + coord_flip() 

print(g) 
+0

Hallo @Kumar, vielen Dank für Ihre Antwort! Aber eigentlich ist Bestellung genau das, was ich ** nicht will. Ich möchte nur, dass die Daten in der gleichen Reihenfolge wie im data.frame erscheinen. Auch wenn ich die Bestellfunktion verwende, werden nur die Etiketten geändert, aber nicht die Daten in den Balken. Also, was passiert im Moment ist, dass die Reihenfolge der df $ derma korrekt ist, aber irgendwie die Daten der df $ Prävalenz geändert wird, aber ich möchte, dass es in der gleichen Reihenfolge bleibt. – Jonas

+0

Entschuldigung, ich habe den Code ein wenig bearbeitet. Ich habe Etikettenargumente anstelle von Ebenen verwendet. Jetzt werden die Daten die Reihenfolge nicht ändern. Ich kenne die Lösung nicht, ohne den Faktor zu bestellen. Wenn Sie eine geordnete Faktorvariable erstellen, ordnen Sie die Daten nicht wirklich an, sondern geben nur an, wie die einzelnen Ebenen geordnet sind. Daher zeigt die Ausgabe eine geordnete Kurve in der Reihenfolge, in der der Faktor ist. –

+0

Genau das habe ich gesucht! Vielen Dank für Ihren Beitrag :) – Jonas