2016-07-27 55 views
5

我試圖改變圖例項目出現的順序。我在這花了大約一個小時,沒有結果。如何重新排序圖例中的項目?

下面是一個例子設置:

library(ggplot2) 
set.seed(0) 
d <- data.frame(x = runif(3), y = runif(3), a = c('1', '3', '10')) 

而這裏的很多東西我已經試過一個:

ggplot(d, aes(x = x, y = y)) + 
    geom_point(size=7, aes(color = a, order = as.numeric(a))) 

enter image description here

(我天真地希望,當然,是圖例項目將以數字順序顯示:1,3,10)

回答

8

ggplot通常會根據levels()的因素。您最好確保這是您想要的訂單,否則您將與R中的許多功能作鬥爭,但您可以通過操縱色標來手動更改此設置:

ggplot(d, aes(x = x, y = y)) + 
    geom_point(size=7, aes(color = a)) + 
    scale_color_discrete(breaks=c("1","3","10")) 
2

Th圖例標籤電子順序可以通過重新排序,並在a列變化值的因素來處理:d$a <- factor(d$a, levels = d$a)

所以,你的代碼看起來像這樣

library(ggplot2) 
set.seed(0) 
d <- data.frame(x = runif(3), y = runif(3), a = c('1', '3', '10')) 

d$a <- factor(d$a, levels = d$a) 

ggplot(d, aes(x = x, y = y)) + 
    geom_point(size=7, aes(color = a)) 

而且ouptut enter image description here

注,現在在圖例中:1是紅色,3是綠色,10是藍色

+1

Thanks!我提高了這個答案,因爲它提供了有用的信息,但我會堅持回答,不需要修改底層的'data.frame'。不知何故,我發現很難相信'ggplot2'需要改變底層的'data.frame',以便改變像圖例中項目排序那樣膚淺的東西。 – kjo

相關問題