R - ggvis - 订购轴

时间:2015-06-26 20:56:41

标签: r ggvis

我第一次玩ggvis。订购X轴时遇到问题。 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 个答案:

答案 0 :(得分:3)

您需要使用scale_ordinal来执行此操作:

示例数据,因为您的问题不可重复(但它是相同类型的数据):

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

解决方案:

初始图表(此处没有订购)

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

enter image description here

自定义有序图(我在这里使用domain参数手动更改顺序):

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 :(得分:2)

您可以尝试在ggvis之外重新排序,例如,

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

答案 2 :(得分: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)

此代码未提供所需结果。