2015-06-26 5 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) 

Этот код не дает требуемого результата.