我想按变量的级别按升序排列条形图。其他帖子here和here无效。
这是一个示例数据
x <- c(rep(letters[1:2], each = 6))
y <- c(rep(letters[3:8], times = 2))
z <- c(2, 4, 7, 5, 11, 8, 9, 2, 3, 4, 10, 11)
dat <- data.frame(x,y,z)
我想要实现的是按照递增的顺序绘制y
按x
分组的级别的条形图。
以下按递增顺序排列y
。
library(tidyverse)
dat2 <- dat %>% group_by(y) %>%
arrange(x, z) %>%
ungroup() %>%
mutate(y = reorder(y, z))
dat2
然而,由此产生的情节并非我所期待的。
ggplot(dat2, aes(y,z)) +
geom_bar(stat = "identity") +
facet_wrap(~x, scales = "free")
如何按y
按z
的递增顺序排列x
的级别?
答案 0 :(得分:2)
如果您希望每个方面内的条形图增加,则y
的相同值需要处于不同方面的不同位置。试试这个:
dat3 <- dat %>%
mutate(x.y = paste(x, y, sep = ".")) %>%
mutate(x.y = factor(x.y, levels = x.y[order(z)]))
# this creates a new variable that combines x & y; different facets
# simply use different subsets of values from this variable
ggplot(dat3, aes(x.y,z)) +
geom_bar(stat = "identity") +
scale_x_discrete(name = "y", breaks = dat3$x.y, labels = dat3$y) +
facet_wrap(~x, scales = "free")