2013-10-31 70 views
1

我無法弄清楚爲什麼ggplot重新安排我的分類變量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尊重我的序列的一個因子?

+0

感謝您的鏈接。它沒有出現在我的搜索中。我不明白的是,如果我按照他的例子,class(x $ variable)是'ordered','factor'。 ggplot遵循指定的順序是有意義的。我只是一個無序的向量。繪圖之前,ggplot是否會自動對我的變量進行排序? – hjw

+1

它轉換爲因子,默認情況下會自動排序。 – James

+0

@詹姆斯。非常感謝,簡短而又甜蜜地回答了我的問題。 – hjw

回答

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

字符向量的排序由字符通過完成字符的基礎 - 即,它不理解的數據的數值的上下文。

ggplot2將字符變量轉換爲因素和排序默認因子的水平:

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

其實將支票上面的評論 – hjw