2015-06-26 62 views
1

我第一次玩ggvis。我無法訂購我的X軸。 ggvis傾向於按字母順序排列。我更喜歡不同的命令(分析師,顧問,軟件工程師,經理,總監)。R - ggvis - 訂購軸

的代碼/數據看起來像這樣:

> str(company$Age) 
int [1:19] 35 37 30 28 28 27 25 26 25 25 ... 
> str(company$Role) 
Factor w/ 5 levels "Analyst","Consultant",..: 3 3 4 4 4 5 2 2 1 1 ... 

Ggvis代碼看起來是這樣的:

company %>% ggvis(~Role,~Age) %>% 
    layer_points() 

結果是按字母順序排列。

關於這個問題,我發現了以下post。但我不知道如何直接應用。

我想:

company %>% ggvis(~Role,~Age) %>% 
    layer_points() %>% 
    add_axis("x", title = "Role", values = c("Analyst","Consultant","Software Engineer","Manager","Director" 

但這似乎並沒有工作。

你能幫我確定我如何訂購這些代碼嗎?

預先感謝您。

親切的問候

回答

3

您需要使用scale_ordinal做到這一點:

的樣本數據作爲你的問題是不可再生的(但它是同一種數據):

library(ggvis) 
library(dplyr) 
mydf2 <- iris %>% 
    group_by(Species) %>% 
    summarize(Sepal.Length = mean(Sepal.Length), 
      Sepal.Width = mean(Sepal.Width)) 

Soluti於:

初始圖(這裏沒有順序)

mydf2 %>% as.data.frame() %>% 
    ggvis(x = ~ Species, y = ~ Sepal.Length) %>% 
    layer_bars(fillOpacity := 0.1) 

enter image description here

自定義序圖(我在此手動更改爲了使用域參數):

mydf2 %>% as.data.frame() %>% 
    ggvis(x = ~ Species, y = ~ Sepal.Length) %>% 
    layer_bars(fillOpacity := 0.1) %>% 
    scale_ordinal('x', domain=c('versicolor','setosa','virginica')) 

enter image description here

x軸需要是一個因素。

+1

太棒了!感謝分享這個。 – lnNoam

+0

沒問題:)。很高興我能幫上忙! – LyzandeR

2

你可以試着重新排序ggvis之外,例如,

company[["Role"]] = factor(
         company[["Role"]] 
        , levels = c("Analyst","Consultant","Software Engineer","Manager","Director") 
) 
+0

似乎像一個魅力工作!但是ggvis中沒有內置的函數來定義標稱尺度嗎? 親切的問候 – glnvdl

0

在本例中,如何通過Sepal.Length值(從max到min)設置圖表的順序?

mydf2 %>% as.data.frame() %>% 
arrange(desc(Sepal.Length)) %>% 
ggvis(x = ~ Species, y = ~Sepal.Length) %>% 
layer_bars() 

mydf2 %>% as.data.frame() %>% 
arrange(desc(Sepal.Length)) %>% 
ggvis(x = ~ Species, y = ~Sepal.Length) %>% 
layer_bars() %>% 
scale_ordinal("x", sort = TRUE) 

此代碼不提供所需的結果。