Ric*_*ton 8 r data-visualization bar-chart ggplot2
如果我想从ggplot2条形图中选择从最大到最小的条形图,那么我通常会更新条形图类别的因子级别,如此
one_group <- data.frame(
height = runif(5),
category = gl(5, 1)
)
o <- order(one_group$height, decreasing = TRUE)
one_group$category <- factor(one_group$category, levels = one_group$category[o])
p_one_group <- ggplot(one_group, aes(category, height)) +
geom_bar(stat = "identity")
p_one_group
Run Code Online (Sandbox Code Playgroud)
如果在不同的方面有几组我想要的条形图,每个小平面都有从最大到最小(和不同的x轴)排序的条形,那么该技术就会崩溃.
给出一些样本数据
two_groups <- data.frame(
height = runif(10),
category = gl(5, 2),
group = gl(2, 1, 10, labels = letters[1:2])
)
Run Code Online (Sandbox Code Playgroud)
和绘图代码
p_two_groups <- ggplot(two_groups, aes(category, height)) +
geom_bar(stat = "identity") +
facet_grid(. ~ group, scales = "free_x")
p_two_groups
Run Code Online (Sandbox Code Playgroud)
我需要做些什么来使酒吧订购正确?
如果有帮助,需要解决的一个问题是:在完成分面后如何更新因子水平?
koh*_*ske 14
这是一个黑客:
two_groups <- transform(two_groups, category2 = factor(paste(group, category)))
two_groups <- transform(two_groups, category2 = reorder(category2, rank(height)))
ggplot(two_groups, aes(category2, height)) +
geom_bar(stat = "identity") +
facet_grid(. ~ group, scales = "free_x") +
scale_x_discrete(labels=two_groups$category, breaks=two_groups$category2)
Run Code Online (Sandbox Code Playgroud)