为什么绘制时排序后的数据帧重新排列?

问题描述 投票:0回答:1

最初,我假设数据帧是df,但是我假设它是字符串,但是能够对字母数字矢量进行排序:

df <- df[mixedorder(as.character(df$ID)),]

创建条形图时,即使我将顺序明确更改为1 10a 10b 11,(x轴)顺序也会更改回1 2 3 4 5

r ggplot2 alphanumeric
1个回答
0
投票

[您似乎正在处理因子,或者在绘制图形时将其强制转换为按字母顺序排序的因子的字符向量,因此,如果它还不是因子,则将其转换为因子,并重新排序因子级别,而不对数据进行排序.frame通过ID:

df <- data.frame(a=factor(as.character(c(1, 2, 3, 10, 11, 20, 21, 22))))
df <- data.frame(ID=factor(c("1", "2", "3", "4", "5", "10a", "10b", "11")), 
                 y=c(seq(100,500,100), 150, 155, 180))
df$ID <- sort(df$ID)
df$ID
#> [1] 1   10a 10b 11  2   3   4   5  
#> Levels: 1 10a 10b 11 2 3 4 5
df$ID <- df$ID[gtools::mixedorder(as.character(df$ID))]
df$ID
#> [1] 1   2   3   4   5   10a 10b 11 
#> Levels: 1 10a 10b 11 2 3 4 5
barplot(y~ID, data=df)

“”


# change the order of the factor levels
levels(df$ID) <- levels(df$ID)[gtools::mixedorder(levels(df$ID))]
barplot(y~ID, data=df)

“”

reprex package(v0.3.0)在2020-04-26创建

© www.soinside.com 2019 - 2024. All rights reserved.