我有一個多面圖,其中我希望 Y 軸標簽和相關值以每個方面的值降序顯示(從而改變標簽的順序)。我所擁有的是這個,但是每個方面的標簽(和相應的值)的順序是相同的。
ggplot(rf,
aes(x = revenues,
y = reorder(AgencyName, revenues)))
geom_point(stat = "identity",
aes(color = AgencyName),
show.legend = FALSE)
xlab(NULL)
ylab(NULL)
scale_x_continuous(label = scales::comma)
facet_wrap(~year, ncol = 3, scales = "free_y")
theme_minimal()
有人可以指出我的解決方案嗎?
uj5u.com熱心網友回復:
tidytext 包中的函式reorder_within和函式scale_*_reordered可能會派上用場。
reorder_within將值重新編碼為帶有“VARIABLE___WITHIN”形式的字串的因子。該因子按每組 WITHIN 中的值排序。
scale_*_reordered繪制軸標簽時洗掉“___WITHIN”后綴。添加scales = "free_y"以facet_wrap使其按預期作業。
以下是生成資料的示例:
library(tidyverse)
# Generate data
df <- expand.grid(
year = 2019:2021,
group = paste("Group", toupper(letters[1:8]))
)
set.seed(123)
df$value <- rnorm(nrow(df), mean = 10, sd = 2)
df %>%
mutate(group = tidytext::reorder_within(group, value, within = year)) %>%
ggplot(aes(value, group))
geom_point()
tidytext::scale_y_reordered()
facet_wrap(vars(year), scales = "free_y")
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471575.html
