我想要在分面条形图中显示数据。 我想出了这个:
但是,方面应由wert2
从kat
列的区域de
排序。
这意味着,“SVP” - 面应位于最左侧,然后是“SP”,依此类推。
如何实现此排序?方面内的顺序应始终为“de”,“fr”,“it”。
第二个问题是:如何根据构面标题手动设置每个构面的颜色?它应该在一个方面内具有相同的色调,而wert1
列应该更亮一些。
ggplot代码:
ggplot(data_long, aes(x=region, y=wert)) +
geom_bar(aes(fill = kat), position = "dodge", width=.5, stat="identity") +
labs(y = "Wähleranteil [ % ]", x = NULL, fill = NULL) +
facet_grid(. ~ type) +
theme_bw() + theme( strip.background = element_blank(),
panel.grid.major = element_line(colour = "grey80"),
panel.border = element_blank(),
axis.ticks = element_blank(),
panel.grid.minor.x=element_blank(),
panel.grid.major.x=element_blank() ) +
theme(legend.position="bottom") +
guides(fill=guide_legend(nrow=1,byrow=TRUE))
数据:
type region label kat wert
1 SVP de SVP de wert1 29.3
2 SVP fr SVP fr wert1 20.2
3 SVP it SVP it wert1 10.3
4 Grüne de Grüne de wert1 8.1
5 Grüne fr Grüne fr wert1 10.2
6 Grüne it Grüne it wert1 6.6
7 FDP de FDP de wert1 13.1
8 FDP fr FDP fr wert1 20.2
9 FDP it FDP it wert1 24.3
10 SP de SP de wert1 17.6
11 SP fr SP fr wert1 23.2
12 SP it SP it wert1 16.8
13 EVP de EVP de wert1 2.6
14 EVP fr EVP fr wert1 1.5
15 EVP it EVP it wert1 0.0
16 glp de glp de wert1 6.4
17 glp fr glp fr wert1 2.8
18 glp it glp it wert1 0.1
19 andere de andere de wert1 2.4
20 andere fr andere fr wert1 1.3
21 andere it andere it wert1 3.3
22 CVP de CVP de wert1 11.5
23 CVP fr CVP fr wert1 13.4
24 CVP it CVP it wert1 20.3
25 BDP de BDP de wert1 7.0
26 BDP fr BDP fr wert1 0.8
27 BDP it BDP it wert1 0.3
28 SVP de SVP de wert2 32.9
29 SVP fr SVP fr wert2 21.0
30 SVP it SVP it wert2 12.1
31 Grüne de Grüne de wert2 6.7
32 Grüne fr Grüne fr wert2 9.1
33 Grüne it Grüne it wert2 3.4
34 FDP de FDP de wert2 14.3
35 FDP fr FDP fr wert2 22.1
36 FDP it FDP it wert2 23.3
37 SP de SP de wert2 18.4
38 SP fr SP fr wert2 21.1
39 SP it SP it wert2 16.1
40 EVP de EVP de wert2 2.4
41 EVP fr EVP fr wert2 1.5
42 EVP it EVP it wert2 0.0
43 glp de glp de wert2 5.5
44 glp fr glp fr wert2 2.4
45 glp it glp it wert2 0.9
46 andere de andere de wert2 2.7
47 andere fr andere fr wert2 1.3
48 andere it andere it wert2 2.3
49 CVP de CVP de wert2 10.2
50 CVP fr CVP fr wert2 14.9
51 CVP it CVP it wert2 20.1
52 BDP de BDP de wert2 5.2
53 BDP fr BDP fr wert2 1.1
54 BDP it BDP it wert2 0.2
答案 0 :(得分:0)
好的,使用 nist 中的信息,我创建了这段代码:
partysubset <- data_long[data_long$kat == "wert2" & data_long$region == "de",c("type","kat","wert")]
partysubset$type <- factor(partysubset$type, levels=partysubset[order(-partysubset$wert),]$type)
data_long$type <- factor(data_long$type, levels = c(levels(partysubset$type)))
它采用要订购的值的行,对它们进行排序并将它们作为级别插入data.frame