ggplot2:安排如何使用融化渲染堆叠的条

时间:2019-01-31 14:11:31

标签: r ggplot2

假设一个框架:

df <- data.frame(Date = c("2016-12-31","2017-01-23","2017-03-28","2018-01-01"), Var1 = c(11,22,45,63), Var2 = c(1,2,3,4), Var3 = c(8,9,10,11))

然后融合我们的数据以创建堆积的条形图:

 data <-  reshape2::melt(df,id.vars = 'Date', variable.name = 'series')

然后绘制图表:

ggplot(data,aes(
      y = value ,
      x = as.Date(Date),
      fill = series
    )) + geom_bar(position="stack", stat="identity")

结果如下: enter image description here

有没有一种方法可以重新排列条形,以使Var3在顶部,其他在下面?因此(在这种情况下)将是:

  

Var3(蓝色),Var1(红色),Var2(绿色)

1 个答案:

答案 0 :(得分:1)

您必须重新排列因子级别。这是一个可能的解决方案:

library(tidyverse)

data %>% 
  mutate(Data = as.Date(Date),
         series = factor(.$series, levels = c("Var3", "Var1", "Var2"))) %>% 
  ggplot(aes(
    y = value ,
    x = Date,
    fill = series)) + 
  geom_bar(position="stack", stat="identity")

enter image description here