R - ggvis - 排序轴
R - ggvis - Ordering axis
我是第一次玩 ggvis。我在订购 X 轴时遇到问题。 ggvis 倾向于按字母顺序排序。我更喜欢不同的顺序(分析师、顾问、软件工程师、经理、主管)。
code/data 看起来像这样:
> 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"
但这似乎不起作用。
你能帮我确定如何订购这个代码吗?
提前致谢。
亲切的问候
您可以尝试在 ggvis 之外重新排序,例如,
company[["Role"]] = factor(
company[["Role"]]
, levels = c("Analyst","Consultant","Software Engineer","Manager","Director")
)
您需要使用 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 轴需要是一个因数。
在此示例中,如何通过 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)
此代码没有给出所需的结果。
我是第一次玩 ggvis。我在订购 X 轴时遇到问题。 ggvis 倾向于按字母顺序排序。我更喜欢不同的顺序(分析师、顾问、软件工程师、经理、主管)。
code/data 看起来像这样:
> 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"
但这似乎不起作用。
你能帮我确定如何订购这个代码吗?
提前致谢。
亲切的问候
您可以尝试在 ggvis 之外重新排序,例如,
company[["Role"]] = factor(
company[["Role"]]
, levels = c("Analyst","Consultant","Software Engineer","Manager","Director")
)
您需要使用 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 轴需要是一个因数。
在此示例中,如何通过 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)
此代码没有给出所需的结果。