R ggplot中堆叠钢筋的顺序
我试图找出ggplot中不同的堆叠条形图。我举了一个例子。除了在绘图左侧堆叠的条的顺序之外,一切都正常 从我所读到的内容来看,默认情况下,条形图应该按照它们在数据帧中的顺序进行堆叠,但它们不是。我确保我的数据框的顺序为“强烈不同意”、“大部分不同意”、“中下”;但他们按照“多数不同意”、“中下不同意”、“强烈不同意”的顺序进行策划。这甚至不是字母顺序,所以我不知道为什么会这样 这是我的密码:R ggplot中堆叠钢筋的顺序,r,ggplot2,bar-chart,R,Ggplot2,Bar Chart,我试图找出ggplot中不同的堆叠条形图。我举了一个例子。除了在绘图左侧堆叠的条的顺序之外,一切都正常 从我所读到的内容来看,默认情况下,条形图应该按照它们在数据帧中的顺序进行堆叠,但它们不是。我确保我的数据框的顺序为“强烈不同意”、“大部分不同意”、“中下”;但他们按照“多数不同意”、“中下不同意”、“强烈不同意”的顺序进行策划。这甚至不是字母顺序,所以我不知道为什么会这样 这是我的密码: library(ggplot2) library(reshape2) library(RC
library(ggplot2)
library(reshape2)
library(RColorBrewer)
library(dplyr)
library(ggthemes)
library(stringr)
my.data<-read.csv("survey_data.csv")
my.title <- "My title"
my.levels<-c("Strongly Disagree", "Mostly Disagree", "Neutral", "Mostly Agree", "Strongly Agree")
my.colors <- c("#CA0020", "#F4A582", "#DFDFDF", "#DFDFDF", "#92C5DE", "#0571B0")
my.legend.colors <- c("#CA0020", "#F4A582", "#DFDFDF", "#92C5DE", "#0571B0")
my.lows <- my.data[1:24,]
my.highs <- my.data[25:48,]
by.outcome=group_by(my.highs,outcome)
my.order <- summarize(by.outcome, value.sum=sum(value))
my.vector <- seq(1,8)
for(i in 1:8) {my.vector[i] <- my.order[[2]][i]}
new.factor.levels <- my.order[[1]][order(my.vector)]
my.lows$outcome <- factor(my.lows$outcome,levels = new.factor.levels)
my.highs$outcome <- factor(my.highs$outcome,levels = new.factor.levels)
ggplot() + geom_bar(data=my.highs, aes(x=outcome, y=value, fill=color), position="stack", stat="identity") +
geom_bar(data=my.lows, aes(x=outcome, y=-value, fill=color), position="stack", stat="identity") +
geom_hline(yintercept=0, color =c("white")) +
scale_fill_identity("Percent", labels = my.levels, breaks=my.legend.colors, guide="legend") +
coord_flip() +
labs(title=my.title, y="",x="") +
theme(plot.title = element_text(size=14, hjust=0.5)) +
theme(axis.text.y = element_text(hjust=0)) +
theme(legend.position = "bottom") +
scale_y_continuous(breaks=seq(-100,100,25), limits=c(-100,100))
如果有人知道为什么不按数据框中的顺序(在绘图的左侧)绘图,那将是我的第一个问题,因为我已经读过这是默认值。我甚至更改了数据帧的顺序,但没有效果,因此我猜测有什么东西正在覆盖它,但我不知道是什么。您需要通过添加这两行(在
ggplot
之前)来修复填充变量(color
)的顺序:
我的.lows$颜色很好用,谢谢!所以现在我明白了为什么它是按那个顺序排列的,因子“color”有字母顺序的默认值。出于某种原因,我认为这些条将按照因子“变量”的顺序堆叠,但这没有意义,因为该因子没有传递给geom_条。那么,条的顺序总是由传递给fill参数的因子决定的吗?不客气。堆叠顺序按中所述确定。
outcome variable value color
1 cat1 Strongly Disagree 7.0212766 #CA0020
2 cat2 Strongly Disagree 1.0909091 #CA0020
3 cat3 Strongly Disagree 0.5763689 #CA0020
4 cat4 Strongly Disagree 1.8181818 #CA0020
5 cat5 Strongly Disagree 2.5000000 #CA0020
6 cat6 Strongly Disagree 1.2750455 #CA0020
7 cat7 Strongly Disagree 1.0964912 #CA0020
8 cat8 Strongly Disagree 1.0416667 #CA0020
9 cat1 Mostly Disagree 7.0212766 #F4A582
10 cat2 Mostly Disagree 1.0909091 #F4A582
11 cat3 Mostly Disagree 1.1527378 #F4A582
12 cat4 Mostly Disagree 1.3636364 #F4A582
13 cat5 Mostly Disagree 10.0000000 #F4A582
14 cat6 Mostly Disagree 0.7285974 #F4A582
15 cat7 Mostly Disagree 1.3157895 #F4A582
16 cat8 Mostly Disagree 1.0416667 #F4A582
17 cat1 Midlow 19.4680851 #DFDFDF
18 cat2 Midlow 9.0909091 #DFDFDF
19 cat3 Midlow 8.0691643 #DFDFDF
20 cat4 Midlow 12.9545454 #DFDFDF
21 cat5 Midlow 18.7500000 #DFDFDF
22 cat6 Midlow 9.5628415 #DFDFDF
23 cat7 Midlow 9.2105263 #DFDFDF
24 cat8 Midlow 7.8125000 #DFDFDF
25 cat1 Midhigh 19.4680851 #DFDFDF
26 cat2 Midhigh 9.0909091 #DFDFDF
27 cat3 Midhigh 8.0691643 #DFDFDF
28 cat4 Midhigh 12.9545454 #DFDFDF
29 cat5 Midhigh 18.7500000 #DFDFDF
30 cat6 Midhigh 9.5628415 #DFDFDF
31 cat7 Midhigh 9.2105263 #DFDFDF
32 cat8 Midhigh 7.8125000 #DFDFDF
33 cat1 Mostly Agree 32.9787234 #92C5DE
34 cat2 Mostly Agree 49.0909091 #92C5DE
35 cat3 Mostly Agree 44.6685879 #92C5DE
36 cat4 Mostly Agree 45.4545454 #92C5DE
37 cat5 Mostly Agree 42.5000000 #92C5DE
38 cat6 Mostly Agree 44.8087432 #92C5DE
39 cat7 Mostly Agree 43.8596491 #92C5DE
40 cat8 Mostly Agree 30.2083333 #92C5DE
41 cat1 Strongly Agree 14.0425532 #0571B0
42 cat2 Strongly Agree 30.5454545 #0571B0
43 cat3 Strongly Agree 37.4639770 #0571B0
44 cat4 Strongly Agree 25.4545455 #0571B0
45 cat5 Strongly Agree 7.5000000 #0571B0
46 cat6 Strongly Agree 34.0619308 #0571B0
47 cat7 Strongly Agree 35.3070175 #0571B0
48 cat8 Strongly Agree 52.0833333 #0571B0
my.lows$color <- factor(my.lows$color, levels = my.colors, ordered = TRUE)
my.highs$color <- factor(my.highs$color, levels = rev(my.colors), ordered = TRUE)