ggplot重新排序分类变量

时间:2013-10-31 08:46:40

标签: r ggplot2

我无法弄清楚为什么ggplot重新排序我的分类变量

xaxis = c('80','90','100')
test = data.frame(x = xaxis, y = c(1,2,3))
ggplot(test, aes(x=x,y=y)) + geom_point()

enter image description here

我在网上发现它与因子级别有关,以下代码修复了我的问题。

xaxis = c('80','90','100')
xaxis = factor(xaxis,levels=xaxis)
test = data.frame(x = xaxis, y = c(1,2,3))
ggplot(test, aes(x=x,y=y)) + geom_point()

enter image description here

但是如果你回到原始代码。

class(xaxis)
[1] "character"

它只是一个字符向量,我没有看到任何先天的排序。有人能解释一下这里发生了什么吗?我是否总是必须将我的x变量更改为ggplot的因子以尊重我的序列?

1 个答案:

答案 0 :(得分:1)

sort(xaxis)
[1] "100" "80"  "90"

字符向量的排序是逐字符完成的 - 即它不理解数据的数字上下文。

ggplot2会将字符变量转换为因子,默认情况下会对其级别进行排序:

factor(xaxis)
[1] 80  90  100
Levels: 100 80 90