2016-06-30 22 views
1

Ich habe eine Frage bezüglich der Reihenfolge der Daten in meiner geom_bar.ggplot2 geom_bar ... wie man die Reihenfolge der Daten hält.frame

Das ist mein Daten-Set:

SM_P,Spotted melanosis on palm,16.2 
    DM_P,Diffuse melanosis on palm,78.6 
    SM_T,Spotted melanosis on trunk,57.3 
    DM_T,Diffuse melanosis on trunk,20.6 
    LEU_M,Leuco melanosis,17 
    WB_M,Whole body melanosis,8.4 
    SK_P,Spotted keratosis on palm,35.4 
    DK_P,Diffuse keratosis on palm,23.5 
    SK_S,Spotted keratosis on sole,66 
    DK_S,Diffuse keratosis on sole,52.8 
    CH_BRON,Dorsal keratosis,39 
    LIV_EN,Chronic bronchities,6 
    DOR,Liver enlargement,2.4 
    CARCI,Carcinoma,1 

ich folgende COLNAMES zuweisen:

colnames(df) <- c("abbr", "derma", "prevalence") # Assign row and column names 

Dann habe ich Grundstück:

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

Plot

Warum ggplot2 rand Ändern Sie einfach die Reihenfolge meiner Daten. Ich möchte die Reihenfolge meiner Daten in Übereinstimmung mit meinem data.frame haben.

Jede Hilfe wird sehr geschätzt!

+0

Es ist nicht zufällig, es ist alphabetisch. Sehen Sie hier für die Lösung http://stackoverflow.com/questions/3253641/change-the-order-of-a-discrete-x-scale – arvi1000

+0

Zunächst einmal vielen Dank für Ihre Antwort. Wenn ich anwenden 'derma_table <- Tabelle (df $ Derma) derma_levels <- Namen (derma_table) [bestellen (df $ Prävalenz)] df $ derma2 <- Faktor (df $ Derma, level = derma_levels)' und dann plot 'ggplot (Daten = df, aes (x = derma, y ​​= Prävalenz)) + geom_bar (stat =" Identität ") + coord_flip()' plotten genau das gleiche wie in meiner Frage. Tatsächlich ändern die Befehle nur den data.frame in alphabetischer Reihenfolge, was genau das ist, was ich vermeiden möchte. – Jonas

+0

Sie nivellieren den 'derma2'-Faktor, aber dann verwenden Sie' x = derma' – arvi1000

Antwort

3

Posting als Antwort, weil Kommentar Thread immer lang. Sie haben die Reihenfolge festlegen, indem Sie die Faktorstufen der Variablen verwenden Sie mit aes(x=...)

# lock in factor level order 
df$derma <- factor(df$derma, levels = df$derma) 

# plot 
ggplot(data=df, aes(x=derma, y=prevalence)) + 
    geom_bar(stat="identity") + coord_flip() 

Ergebnis Karte, gleichen Reihenfolge wie in df: enter image description here

# or, order by prevalence: 
df$derma <- factor(df$derma, levels = df$derma[order(df$prevalence)]) 

Same Plotbefehl gibt:

enter image description here


ich in den Daten wie folgt lesen:

read.table(text= 
"SM_P,Spotted melanosis on palm,16.2 
DM_P,Diffuse melanosis on palm,78.6 
SM_T,Spotted melanosis on trunk,57.3 
DM_T,Diffuse melanosis on trunk,20.6 
LEU_M,Leuco melanosis,17 
WB_M,Whole body melanosis,8.4 
SK_P,Spotted keratosis on palm,35.4 
DK_P,Diffuse keratosis on palm,23.5 
SK_S,Spotted keratosis on sole,66 
DK_S,Diffuse keratosis on sole,52.8 
CH_BRON,Dorsal keratosis,39 
LIV_EN,Chronic bronchities,6 
DOR,Liver enlargement,2.4 
CARCI,Carcinoma,1", header=F, sep=',') 
colnames(df) <- c("abbr", "derma", "prevalence") # Assign row and column names 
+0

Vielen Dank für Ihre Mühe! Ich schätze deine Hilfe sehr! Haben Sie einige Zeilen aus dem von Ihnen geposteten Code entfernt? Ich bekomme nicht die gleichen Häkchen, wenn ich den Code ausprobiere. – Jonas

+0

Das einzige, was ich nicht gepostet habe, war der Code, mit dem ich deine Daten gelesen habe. jetzt hinzugefügt. – arvi1000

+0

Seltsam ... Ich bekomme eine andere Achse. Wie auch immer, vielen Dank für Ihre Mühe! Sehr geschätzt! :) – Jonas

Verwandte Themen