首页 > 解决方案 > ggplot - 防止字符或因子 x 轴值的排序

问题描述

考虑以下数据框被绘制为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 轴刻度,因为我的原始数据集有数千个条目。

标签: rggplot2line-plot

解决方案


您应该创建一个有序因素来阻止订单。例如

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保留了顺序。


推荐阅读