【问题标题】:R - ggvis - Ordering axisR - ggvis - 排序轴
【发布时间】:2023-03-17 01:45:01
【问题描述】:

我是第一次玩 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"

但这似乎不起作用。

您能帮我确定如何订购此代码吗?

提前谢谢你。

亲切的问候

【问题讨论】:

    标签: r ggvis


    【解决方案1】:

    您需要使用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 )
    

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

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

    x 轴需要是一个因素。

    【讨论】:

    • 太棒了!感谢分享。
    • 没问题:)。很高兴我能帮上忙!
    【解决方案2】:

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

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

    【讨论】:

    • 看起来就像一个魅力!但是 ggvis 中没有用于订购标称刻度的内置函数吗?亲切的问候
    【解决方案3】:

    在这个例子中,如何通过 Sepal.Length 值(从最大值到最小值)设置图表的顺序?

     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)
    

    此代码没有给出所需的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-04
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      相关资源
      最近更新 更多