小编use*_*017的帖子

R:按级别频率和绘图排序因子

我有一个data.frame有几个因素,如:

df<-data.frame(Var1=as.factor(sample(c("AB", "BC", "CD", "DE", "EF"), 1000, replace=TRUE)))
Run Code Online (Sandbox Code Playgroud)

summary(df$Var1)
 AB  BC  CD  DE  EF 
209 195 178 221 197
Run Code Online (Sandbox Code Playgroud)

我想在data.frame中绘制每个因子的级别频率,如下所示:

ggplot(df, aes(x=factor(1), fill=factor(Var1)))+
       geom_bar(width=1, colour="black")+
       coord_polar(theta="y")+
       theme_void()
Run Code Online (Sandbox Code Playgroud)

但是,级别的顺序是按字母顺序而不是按频率.使用次数库(plyr)我可以创建一个新data.frame,让我每一级的频率:

df_count <-count(df, "Var1")
Var1 freq
1   AB  209
2   BC  195
3   CD  178
4   DE  221
5   EF  197
Run Code Online (Sandbox Code Playgroud)

然后我可以使用它重新排序

df_count$Var1<-factor(df_count$Var1, levels=df_count$Var1[order(df_count$freq, decreasing=TRUE)])
Run Code Online (Sandbox Code Playgroud)

在绘制时给出了我想要的,每个级别的排序频率.

1.)这是最优雅的解决方案吗?它为我的原始data.frame中的每个因子/列提供了额外的data.frame,我觉得必须有一个更简单的方法.

2.)在绘图时,如何重命名图例标签并确保它们被分配了正确的因子水平?如果我使用

scale_fill_manual(labels=c("Name of AB", "Name of BC", "Name of CD", "Name of DE","Name of EF"))
Run Code Online (Sandbox Code Playgroud)

标签与正确的级别无关.这里图例中的第一个条目是"DE",因为它是频率最高的级别,但标签会在scale_fill_manual中 …

r ggplot2 plyr dataframe r-factor

4
推荐指数
3
解决办法
7410
查看次数

标签 统计

dataframe ×1

ggplot2 ×1

plyr ×1

r ×1

r-factor ×1