ggplot在无法重新排序时对条形图进行排序

时间:2014-10-28 06:32:21

标签: r ggplot2

假设我的数据框只有2列,var和fill(两个因子)。我使用

创建了一个条形图
ggplot(df, aes(var, fill=fill)) + geom_bar()

我这样做的原因是因为我需要一个堆叠的直方图。 y值是var中各种值的计数,似乎是由ggplot隐式计算的。这一切都很好。

现在,我的问题是结果图没有排序,我不能使用通常的重新排序方法对此进行排序,因为这里没有明确的y值。

我该怎么做?

编辑:样本数据和图表(我想要对图表进行排序,因此我首先看到NA,下一个是SA,最后是欧洲)

> df = data.frame(var=c("NA","EU","SA","NA","SA","NA"),fill=c("f1","f2","f2","f1","f2","f2"))
> df
  var fill
1  NA   f1
2  EU   f2
3  SA   f2
4  NA   f1
5  SA   f2
6  NA   f2
> ggplot(df, aes(x=var, fill=fill)) + geom_bar()

enter image description here

1 个答案:

答案 0 :(得分:1)

你应该创建有序因子来做到这一点。在levels参数中,您可以根据需要更改订单。当您编写ordered = TRUE时,它将保留订单

df$var <- factor(df$var,levels = c("SA","NA","EU"),ordered = TRUE)
ggplot(df, aes(x=var, fill=fill)) + geom_bar()

enter image description here