我有四个小词,由记号和相似性组成。
# A tibble: 15 x 2
token similarity
<chr> <dbl>
1 beer 1.000
2 bud 0.495
3 answering 0.492
4 raw 0.489
5 tequila 0.476
6 shower 0.468
7 colors 0.468
8 flx 0.457
9 carrots 0.450
10 learn 0.447
11 pong 0.445
12 tall 0.444
13 drinking 0.444
14 brew 0.443
15 anything 0.442
要分组的源代码
beer %>%
mutate(selected = "beer") %>%
bind_rows(alcohol %>%
mutate(selected = "alcohol")) %>%
bind_rows(drunk %>%
mutate(selected = "drunk")) %>%
bind_rows(sober %>%
mutate(selected = "sober")) %>%
group_by(selected) %>%
top_n(15, similarity) %>%
ungroup %>%
mutate(token = reorder(token, similarity)) %>%
ggplot(aes(token, similarity, fill = selected)) +
geom_col(show.legend = FALSE) +
facet_wrap(~selected, scales = "free") +
coord_flip() +
theme(strip.text=element_text(hjust=0, size=12)) +
scale_y_continuous(expand = c(0,0))
如何重新排序图形?
答案 0 :(得分:1)
尝试:
{{1}}
答案 1 :(得分:1)
如@Tung所指出的那样,解决方案在于此link。
最终源代码:
reorder_within <- function(x, by, within, fun = mean, sep = "___", ...) {
new_x <- paste(x, within, sep = sep)
stats::reorder(new_x, by, FUN = fun)
}
scale_x_reordered <- function(..., sep = "___") {
reg <- paste0(sep, ".+$")
ggplot2::scale_x_discrete(labels = function(x) gsub(reg, "", x), ...)
}
beer %>%
mutate(selected = "beer") %>%
bind_rows(alcohol %>%
mutate(selected = "alcohol")) %>%
bind_rows(drunk %>%
mutate(selected = "drunk")) %>%
bind_rows(sober %>%
mutate(selected = "sober")) %>%
group_by(selected) %>%
top_n(15, similarity) %>%
ungroup %>%
mutate(token = reorder(token, similarity)) %>%
ggplot(aes(reorder_within(token, similarity, selected), similarity)) +
geom_segment(aes(xend = reorder_within(token, similarity, selected), yend = 0),
colour = "#FF9999") +
scale_x_reordered() +
geom_col(show.legend = FALSE) +
facet_wrap(~selected, scales = "free") +
coord_flip() +
xlab("token") +
theme(strip.text=element_text(hjust=0, size=12)) +
scale_y_continuous(expand = c(0,0)) +
geom_bar(stat = "identity")