我有一个数据框,用于存储每个模型的计数值。型号名称是字母数字。然后我使用ggplot2生成条形图,其中x轴为模型,y轴为计数。我想订购我的x轴。 x轴在数据框中显示如下,在图中的x轴中显示如下。我想正确排序,例如,M_1,M_2,M_3,M_10,M_11,M_20等
Model Count
M_1 73
M_10 71
M_100 65
M_11 65
M_110 64
M_111 71
M_13 70
M_130 73
M_2 72
M_20 69
M_200 63
M_21 72
M_210 72
M_211 67
M_3 78
M_30 76
M_300 59
M_31 73
M_310 64
我尝试使用order(),mixedsort(),arrange()来首先排序数据帧,并使用ggplot2中的factor()。但是没有成功。
geneDFColSum[with(geneDFColSum, order(geneDFColSum$Model)), ]
geneDFColSum[with(geneDFColSum, mixedsort(geneDFColSum$Model)), ]
library(dplyr)
arrange(geneDFColSum, Model)
有没有办法实现这个目标?我可以将型号分成单独的列并按该列排序。然而,看是否有一个简单的方法。
答案 0 :(得分:3)
您需要订购因子的级别,而不是数据的行:
dd$Model = factor(dd$Model, levels = gtools::mixedsort(dd$Model))
ggplot(dd, aes(x = Model, y = Count)) + geom_col()
将其用作输入数据:
dd = read.table(text = "Model Count
M_1 73
M_10 71
M_100 65
M_11 65
M_110 64
M_111 71
M_13 70
M_130 73
M_2 72
M_20 69
M_200 63
M_21 72
M_210 72
M_211 67
M_3 78
M_30 76
M_300 59
M_31 73
M_310 64", header = T, stringsAsFactors = FALSE)
答案 1 :(得分:2)