Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R ggplot中堆叠钢筋的顺序_R_Ggplot2_Bar Chart - Fatal编程技术网

R ggplot中堆叠钢筋的顺序

R ggplot中堆叠钢筋的顺序,r,ggplot2,bar-chart,R,Ggplot2,Bar Chart,我试图找出ggplot中不同的堆叠条形图。我举了一个例子。除了在绘图左侧堆叠的条的顺序之外,一切都正常 从我所读到的内容来看,默认情况下,条形图应该按照它们在数据帧中的顺序进行堆叠,但它们不是。我确保我的数据框的顺序为“强烈不同意”、“大部分不同意”、“中下”;但他们按照“多数不同意”、“中下不同意”、“强烈不同意”的顺序进行策划。这甚至不是字母顺序,所以我不知道为什么会这样 这是我的密码: library(ggplot2) library(reshape2) library(RC

我试图找出ggplot中不同的堆叠条形图。我举了一个例子。除了在绘图左侧堆叠的条的顺序之外,一切都正常

从我所读到的内容来看,默认情况下,条形图应该按照它们在数据帧中的顺序进行堆叠,但它们不是。我确保我的数据框的顺序为“强烈不同意”、“大部分不同意”、“中下”;但他们按照“多数不同意”、“中下不同意”、“强烈不同意”的顺序进行策划。这甚至不是字母顺序,所以我不知道为什么会这样

这是我的密码:

  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)