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
保留顺序。
考虑将以下数据框绘制为 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
保留顺序。