如何使用ggplot分组并显示前X个类别?

Mik*_*eTP 3 r ggplot2

我正在尝试使用ggplot来绘制公司的生产数据,并使用该点的颜色来指定年份.下图显示了基于样本数据的示例: 在此输入图像描述

然而,通常我的真实数据有50-60个不同的公司,这使得Y轴上的公司名称被完全分组并且不是非常令人愉快.

仅显示前5家公司信息(按2011年量级排名)的最简单方法是什么,然后显示其余的汇总并显示为"其他"?

下面是一些示例数据和我用于创建示例图表的代码:

# create some sample data
c=c("AAA","BBB","CCC","DDD","EEE","FFF","GGG","HHH","III","JJJ")

q=c(1,2,3,4,5,6,7,8,9,10)
y=c(2010)
df1=data.frame(Company=c, Quantity=q, Year=y)

q=c(3,4,7,8,5,14,7,13,2,1)
y=c(2011)
df2=data.frame(Company=c, Quantity=q, Year=y)

df=rbind(df1, df2)

# create plot
p=ggplot(data=df,aes(Quantity,Company))+
  geom_point(aes(color=factor(Year)),size=4)
p
Run Code Online (Sandbox Code Playgroud)

我开始沿着蛮力的方式走下去,但我认为可能有一种简单而优雅的方式可以做到这一点,我应该学习.任何帮助将不胜感激.

cbe*_*ica 6

那这个呢:

    df2011 <- subset (df, Year == 2011)
    companies <- df2011$Company [order (df2011$Quantity, decreasing = TRUE)]
    ggplot (data = subset (df, Company %in% companies [1 : 5]), 
            aes (Quantity, Company)) +
            geom_point (aes (color = factor (Year)), size = 4)
Run Code Online (Sandbox Code Playgroud)

BTW:为了让代码被称为优雅,花费更多的空间,它们并不那么昂贵......