【发布时间】:2021-12-09 04:04:06
【问题描述】:
假设我有以下数据:
library(tidyverse)
set.seed(123)
col <- tibble(
name = toupper(letters[1:20]),
share = round(rnorm(20, 0.5, 0.1), 2),
active_days = sample.int(50, 20)
)
使用scale_y_discrete(),按照上面的代码绘制,我们得到:
col %>%
ggplot(aes(y = reorder(name, share), x = share)) +
geom_col() +
labs(x = "Share",
y = "Merchant")
我想将active_days 的值添加到图中每个商家的标签中。这可以使用scale_y_discrete 来实现:
col %>%
ggplot(aes(y = reorder(name, share), x = share)) +
geom_col() +
labs(x = "Share",
y = "Merchant") +
scale_y_discrete(labels = paste0(col$name, " (", col$active_days, ")"))
但是,添加 scale_y_discrete 会将标签的顺序更改为反转字母顺序,但值/条会按降序正确显示,在这种情况下,给人的印象是商家 T 拥有最高份额,而它其实是商家P!这显然是非常不受欢迎的。任何人都知道这里发生了什么,以及如何补救?
【问题讨论】: