如何在堆积区域图上重新排序x轴

时间:2016-04-29 19:14:24

标签: r plot ggplot2 stacked-area-chart

我有以下数据框,想要绘制堆积区域图:

library(ggplot2)
set.seed(11)
df <- data.frame(a = rlnorm(30), b = as.factor(1:10), c = rep(LETTERS[1:3], each = 10))

ggplot(df, aes(x = as.numeric(b), y = a, fill = c)) + 
    geom_area(position = 'stack') +
    theme_grey() +
    scale_x_discrete(labels = levels(as.factor(df$b))) +
    theme(axis.text.x = element_text(angle = 90, hjust = 1))

我系统上的结果图如下所示:

stacked_area_plot

不幸的是,x轴似乎没有出现。我想绘制df$b旋转的值,以便它们不会重叠,最终我想以特定的方式对它们进行排序(还没到那么远,但我会采取任何建议)。

此外,根据?factor()使用as.numeric()使用因素并不是最好的方法。当我致电ggplot但忽略as.numeric() aes(x=...时,情节会变空。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

b作为一个因素。您还需要添加与group美学相同的fill美学。 (这告诉ggplot如何在不同的因素级别之间连接点#34。

ggplot(df, aes(x = b, y = a, fill = c, group = c)) + 
    geom_area(position = 'stack') +
    theme(axis.text.x = element_text(angle = 90, hjust = 1))

enter image description here

对于顺序,x轴将按因子级别的顺序排列。要更改轴的顺序,只需更改因子级别的顺序。 reorder()如果基于数字列(或数字列的函数),则效果很好。对于任意订单,只需在factor调用中直接指定关卡的顺序,例如:df$b = factor(df$b, levels = c("1", "5", "2", ...)有关此问题的更多示例,请参阅r-faq Order bars in ggplot。你的不是一个条形图,但原则是相同的。