假设我的数据框只有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()
答案 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()