ggplot2条形图-按一组值排序 [英] ggplot2 bar-chart order by values of one group
本文介绍了ggplot2条形图-按一组值排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试在gglot中订购条形图。 我正试着做其中一个并排的条形图。我有两个组的数据,我想按一个组的值对曲线图进行排序。目前,我的图是这样的:
我希望实现此目标:
其中绘图按组1的递减值(此处为蓝色)排序。 我该怎么做呢?我在组内的Category上尝试了FCT_REORDER,进行了排列、排序、排序,并设法在gglot之外对其进行了排序,但结果并非如此…如有任何帮助,我们将不胜感激!编辑: 根据建议,我尝试了以下操作:
data %>%
ggplot(aes(x = fct_rev(fct_reorder(labels, value)), y = value, fill
= variable)) +
geom_bar(stat="identity", width=.5, position = "dodge") +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
我得到:
这不是我真正想要的。我想按选定的(红条)按降序排序。SELECTED和NEW显然是一个变量,因此在一列中也是如此。如果我必须把他们分开,那很好,我只是不知道怎么做。
数据:
structure(list(labels = c("3", "16",
"20", "15", "2",
"11", "19",
"8", "1",
"9", "12", "14",
"22", "6", "5",
"18", "17", "23",
"21", "13", "7",
"10", "4", "3", "16",
"20", "15", "2",
"11", "19",
"8", "1",
"9", "12", "14",
"22", "6", "5",
"18", "17", "23",
"21", "13", "7",
"10", "4"), variable = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("selected", "new"), class = "factor"), value = c(14.6323031713383, 15.9559892686597,
17.8080362595634, 17.9067064016601, 24.0164577112395, 24.8811598509513,
26.6357978795688, 26.8956804786175, 29.9814126083425, 32.0991304536091,
32.1102536829839, 35.4868462306579, 38.1006034580602, 51.1456293356122,
51.3589926258885, 52.1663444535308, 54.5568962268846, 55.046508165816,
57.3540750283887, 59.4724704424851, 66.1242468388916, 76.0316429487087,
81.2328164785417, 0.852076511173202, 14.5657895883356, 12.879854304722,
5.64377267586918, 7.1645313211506, 22.9837800173366, 25.5540168398152,
22.2012270424052, 23.9767694081375, 23.8383007367455, 29.8528524241582,
35.157323503853, 3.57512478022716, 2.79829414578611, 25.7839377086262,
1.61935008218228, 36.4318154009141, 41.9502761903778, 43.6568981148706,
50.8270620551394, 25.1245202778254, 17.0173820081843, 32.5450448621647
)), row.names = c(NA, -46L), class = "data.frame")
推荐答案
在调用ggplot
之外处理数据,以确定您感兴趣的分组变量(标签)的因子顺序。然后将此因子应用于ggplot
中的LABES变量。
library(ggplot2)
library(dplyr)
sel_order <-
data %>%
filter(variable == "selected") %>%
arrange(desc(value)) %>%
mutate(labels = factor(labels))
data %>%
mutate(labels = factor(labels, levels = sel_order$labels, ordered = TRUE)) %>%
ggplot(aes(x = labels, y = value, fill = variable), group = labels) +
geom_bar(stat="identity", width=.5, position = "dodge") +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
由reprex package(v0.3.0)于2020-05-26创建
这篇关于ggplot2条形图-按一组值排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文