按ggplots中的值排序

时间:2018-04-05 16:21:11

标签: r ggplot2 data-manipulation

我有一个时间序列数据框:

Data frame

专栏" Contas.Resultado"按照" Valor"的升序正确排序列。

我的问题是:

当我绘制图表时,图例没有以正确的顺序出现,因此,某些geom_area图与其他图重叠。

ggplotly(tbl1 %>% ggplot(aes(Ano, Valor)) + 
  geom_area(aes(fill = Contas.Resultado), 
            position = position_dodge(width = 0), stat = "identity") +    
  scale_x_yearmon() +
  xlab("") +
  ylab("R$ (milhões)")) 

Overlap Chart

我使用这个得到了正确的结果:

df$Contas.Resultado <- factor((df$Contas.Resultado), 
                              levels = c("Faturamento", "Receita Líquida", 
                                         "Resultado Bruto", "EBTIDA R$", "EBTI",
                                         "Resultado Líquido"))

如果有人知道解决这个问题的简单方法,我将不胜感激

1 个答案:

答案 0 :(得分:0)

尝试使用Hadley Wickam的tidyverse中的forcats package。您应该可以将月份作为级别订购。来自Hadley网站的可能解决方案:

month_levels <- c(
  "Jan", "Feb", "Mar", "Apr", "May", "Jun", 
  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
)

factor(x1, month_levels)


#> [1] Dec Apr Jan Mar
#> Levels: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

这对你有用吗?