我正在尝试以最大比例的“ muni_d2 = 2”排在后面的方式排列此ggplot,然后是“ muni_d2 = 1”。
我尝试了一些代码,例如ranging()和reorder(),但是它们没有用。
这是数据:
structure(list(muni_o = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L,
8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L,
21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L,
34L, 35L, 36L, 37L, 38L, 39L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L,
22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L,
35L, 36L, 37L, 38L, 39L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L,
10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L,
23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L,
36L, 37L, 38L, 39L), .Label = c("1", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17",
"18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28",
"29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39"
), class = "factor"), muni_d2 = 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, 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, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L
), .Label = c("0", "1", "2"), class = "factor"), Freq = c(6122.14220014045,
14014.8937908602, 3212.98371738453, 3762.86973933326, 2036.58101043117,
49935.7095757787, 5660.24459378729, 27133.6814011703, 8436.05010435109,
1244.59144510279, 8192.3151623091, 5125.775303556, 5520.96031514796,
971.04877757262, 13042.4320509421, 11677.9344908548, 23179.1486978947,
19342.6692995674, 11480.8298502747, 773.75470216998, 658.84762129725,
47303.8942738045, 12189.6600233976, 34138.2766548561, 2280.85569280618,
6648.00527768305, 13731.4673121252, 6822.03535863008, 1654.5719919344,
3408.63547537664, 8289.59920490436, 68250.529943451, 42919.3498777027,
11304.5876393861, 1371.59278771158, 281250.973114875, 11758.2956764985,
12160.5828034274, 4762.03601855022, 3774.00754913303, 17629.1897496886,
450.28749520739, 11504.661338085, 2732.14923854684, 40180.8293143395,
16562.6710623701, 43865.6430358497, 36647.9484766594, 7035.57607097289,
25651.323071728, 26432.811604918, 23743.6986932767, 597.5643668538,
124644.985934809, 29773.2098362482, 13788.9040158001, 24718.4440592384,
6526.85217011751, 474.70640264902, 5440.01365034166, 29930.306857298,
11072.6889810259, 101099.685991706, 254.95577591974, 11637.2716353329,
5367.72912672273, 2504.81681919538, 97.98256049428, 2258.20425774592,
8475.80585487552, 40564.9077830157, 59907.8345066714, 12858.502494956,
850.24914346085, 0, 14152.3410516667, 41777.9839790016, 2730.8225408641,
13662.2793985781, 46579.248451629, 5035.33799662119, 9167.68431269098,
15713.4248568278, 36391.6173102699, 36523.5128982161, 56158.4213063058,
17666.1932118543, 10319.0225229469, 14744.0900996851, 14519.6971048675,
14341.9635886829, 5193.52143006156, 267285.439969485, 10049.4551896091,
17861.0606322283, 56589.3203766755, 14836.888817694, 6069.4455916734,
18992.3441918275, 52074.0110108799, 88973.5164027747, 82777.2109430964,
2270.54970959312, 12030.813277725, 15414.1038338142, 3284.84133984456,
3101.73291583232, 10020.5318813645, 25286.7675500444, 114919.563601638,
185758.597625183, 28154.2996127091, 2873.4152126078, 3503521.52693064,
49555.0928217366, 35402.2559957372, 7917.49624385274)), class = "data.frame", row.names = c(NA,
-117L))
这是当前情节:
ggplot(pop, aes(muni_o, Freq, fill = muni_d2)) +
geom_col(position = "fill") +
coord_flip()
答案 0 :(得分:1)
图中的顺序由因子muni_o
中的级别定义,因为您希望按两列进行排列,所以我认为重新排序是行不通的。您可以做的是按两列排列数据框,然后相应地重新排列因子水平,这是可能的:
pop %>%
group_by(muni_o) %>%
mutate(prop = Freq / sum(Freq)) %>%
ungroup() %>%
arrange(desc(muni_d2), prop) %>%
mutate(muni_o = factor(muni_o, levels = unique(muni_o))) %>% # here you rearrange the levels
ggplot(aes(muni_o, prop, fill = muni_d2)) +
geom_col() +
coord_flip()
希望这会有所帮助。