【发布时间】:2019-10-11 18:40:33
【问题描述】:
我想创建一个包含两个类别 a 和 b 的条形图,其中列的颜色取决于类别。对于他们两个,我都有字符串x 来确定类别顺序。 x 中的值可以出现在这两个类别中。现在我想找到一种基于两件事来绘制列的方法:首先,x 的所有元素按其词汇顺序属于类别“a”,然后对于属于类别 b 的元素也是如此。理想情况下,不沿着str_c(x, y) 的行创建一个人工x 列,因为它们已经由图例编码。
此外,分面不是一种选择,因为这已经为另一列完成了。
我找到了一个solution,它用我想要的标签明确地覆盖了 x-labels,但我希望看到一种不那么笨拙且可能容易出错的方式!
library(tidyverse)
set.seed(1)
df <-
tibble(
x = c('1', '0', '0', '1'),
y = c('a', 'a', 'b', 'b'),
z = runif(4)
)
df %>%
arrange(y, x) %>%
mutate(ordering = str_c(y, '_', x)) %>%
{
ggplot(., aes(ordering, z, fill = y)) +
geom_col() +
scale_x_discrete(labels = pull(., x))
}
【问题讨论】: