ggplot - 防止字符或因子 x 轴值的排序

ggplot - prevent ordering of character or factor x-axis values

考虑将以下数据框绘制为 geom_line:

mydata <- data.frame(X = c('1 Dog', '2 Dog', '3 Dog', '4 Dog', '1 Frog', '2 Frog', '1 Cat', '2 Cat'), Y = sample(1:3, 8, replace = T))
myplot <- ggplot(mydata, aes(x = X, y = Y, group = 1)) + geom_line() + theme(axis.text.x = element_text(angle = 90, hjust = 1))
print(myplot)

该图按数字和字母顺序对 x 轴进行排序。我怎样才能防止这种情况,以便按照数据框中的顺序绘制图形?将 X 转换为字符没有帮助。我无法手动订购 x 轴刻度,因为我的原始数据集有数千个条目。

您应该创建一个有序因子来防止排序。例如

mydata$x <- factor(maydata$x, 
                   levels = c('1 Dog', '2 Dog', '3 Dog', '4 Dog', '1 Frog', '2 Frog', '1 Cat', '2 Cat'), 
                   ordered = T)

在级别参数中,您应该按照您希望在图中看到的特定顺序提及级别。参数 ordered = T 保留顺序。