Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.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'中的堆叠控制顺序;s geom_col当需要组进行镶嵌时_R_Ggplot2 - Fatal编程技术网

R ggplot'中的堆叠控制顺序;s geom_col当需要组进行镶嵌时

R ggplot'中的堆叠控制顺序;s geom_col当需要组进行镶嵌时,r,ggplot2,R,Ggplot2,我已经设置了因子级别来控制堆叠条形图在ggplot的geom_col中的显示顺序。然后我想用一个额外的因子来刻面条形图。当我为geom_col向aes添加“group”时,它会丢失条的顺序 这个最小的例子导致了这个问题,尽管我希望在减少它时没有遗漏任何关键的复杂因素。我故意以一种非直观的排名来排列共青团的级别。在第一个图表中,排名是荣誉的。在刻面版本中,它不是 library(ggplot2) m.cars <- mtcars m.cars$cyl <- factor(m

我已经设置了因子级别来控制堆叠条形图在ggplot的geom_col中的显示顺序。然后我想用一个额外的因子来刻面条形图。当我为geom_col向aes添加“group”时,它会丢失条的顺序

这个最小的例子导致了这个问题,尽管我希望在减少它时没有遗漏任何关键的复杂因素。我故意以一种非直观的排名来排列共青团的级别。在第一个图表中,排名是荣誉的。在刻面版本中,它不是

  library(ggplot2)
  m.cars <- mtcars
  m.cars$cyl <- factor(m.cars$cyl, levels = c(6, 8, 4))
  m.cars$carb <- factor(m.cars$carb)
  m.cars$vs <- factor(m.cars$vs, levels = c(1, 0)) 
  ggplot(data = m.cars) +
     geom_col(aes(x = gear, y = mpg, fill = cyl))

我认为,当未设置因子级别时,分类变量的默认顺序是字母顺序。在我的数据中,stack ordering变量的值(相当于示例中的cyl)已经是字符了。这不是最优的,但我尝试改变我的基础数据,以便我想要的堆叠顺序是字母顺序。与示例类似,我将档位从4、6和8换为“b4”、“a6”和“c8”。这没什么区别

这个问题有一些相似之处,但他们正在努力控制的顺序是面,而对我来说,这是条堆叠的顺序


我可能不得不求助于这个想法,但我希望用方面来代替。“这样做的唯一方法是制作单独的绘图,并使用gridExtra包中的grid.arrange。但我同意这通常不会产生一个非常好的绘图。”我有很多图例的复杂情况,等等。

从代码中删除
组=…
,它应该可以按照您的预期工作

ggplot(data = m.cars) +  
  geom_col(aes(x = gear, y = mpg, fill = cyl)) +
  facet_wrap(~vs)

引入方面也不需要添加匹配组。(您将看到在
geom_boxplot
中经常使用的组,这可能会告诉您何时何地使用这些组)。

完美!使我的一天,不必重建这组图表。
ggplot(data = m.cars) +  
  geom_col(aes(x = gear, y = mpg, fill = cyl)) +
  facet_wrap(~vs)