ggplot2 geom_bar - how to keep order of data.frame
本问题已经有最佳答案,请猛点这里访问。
我对我的
这是我的数据集:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 |
我分配了以下名称:
1 | colnames(df) <- c("abbr","derma","prevalence") # Assign row and column names |
然后我绘图:
1 | ggplot(data=df, aes(x=derma, y=prevalence)) + geom_bar(stat="identity") + coord_flip() |
为什么ggplot2会随机更改我的数据顺序。我想让我的数据顺序与我的
保持一致
非常感谢您的帮助!
发布评论作为答案,因为评论线程越来越长。您必须使用
映射的变量的因子水平来指定顺序
1 2 3 4 5 6 | # 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() |
结果,与
1 2 | # or, order by prevalence: df$derma <- factor(df$derma, levels = df$derma[order(df$prevalence)]) |
相同的绘图命令给出:
我读入这样的数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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 |