首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ggplot2堆叠条形图中按大小对堆栈进行排序

在ggplot2堆叠条形图中按大小对堆栈进行排序
EN

Stack Overflow用户
提问于 2012-02-10 19:58:02
回答 2查看 11K关注 0票数 14

因此,我有大量的数据,下面是我采样的一个例子:

代码语言:javascript
运行
复制
Sequence  Abundance   Length
CAGTG    3       25
CGCTG    82      23
GGGAC    4       25
CTATC    16      23
CTTGA    14      25
CAAGG    9       24
GTAAT    5       24
ACGAA    32      22
TCGGA    10      22
TAGGC    30      21
TGCCG    25      21
TCCGG    2       21
CGCCT    22      24
TTGGC    4       22
ATTCC    4       23

我在这里只显示了每个序列的前4个单词,但实际上它们是“长度”很长。我在这里查看每个大小类的丰富的序列。此外,我想要可视化特定序列在其大小类中表示的丰度比例。目前,我可以制作一个堆叠的条形图,如下所示:

代码语言:javascript
运行
复制
ggplot(tab, aes(x=Length, y=Abundance, fill=Sequence)) 
  + geom_bar(stat='identity') 
  + opts(legend.position="none")

对于像这样的小数据集来说,这很好,但是我的实际数据集中大约有170万行。它看起来非常丰富多彩,我可以看到特定的序列在一个大小的类中拥有大多数丰度,但它非常混乱。

我希望能够按该序列的丰富度对每种大小的彩色堆叠条形进行排序。即,在它们的堆栈中具有最高丰度的条块位于每个堆栈的底部,具有最低丰度的条块位于顶部。这样看起来会好很多。

有没有关于如何在ggplot2中做到这一点的想法?我知道aes()中有一个"order“参数,但我不知道它应该如何处理我拥有的格式的数据。

EN

Stack Overflow用户

回答已采纳

发布于 2012-02-11 00:54:45

在ggplot2中,条形图在堆叠条形图中的绘制顺序(从下到上)取决于定义组的因子的顺序。因此,必须根据AbundanceSequence因子进行重新排序。但是为了获得正确的堆叠顺序,必须颠倒顺序。

代码语言:javascript
运行
复制
ab.tab$Sequence <- reorder(ab.tab$Sequence, ab.tab$Abundance)
ab.tab$Sequence <- factor(ab.tab$Sequence, levels=rev(levels(ab.tab$Sequence)))

现在,使用您的代码可以得到您要求的图

代码语言:javascript
运行
复制
ggplot(ab.tab, aes(x=Length, y=Abundance, fill=Sequence)) +
  geom_bar(stat='identity') +
  opts(legend.position="none")

然而,我可能会推荐一些稍微不同的东西。既然你抑制了将颜色映射到序列的比例,而且你的描述似乎表明你无论如何都不关心特定的序列(而且会有很多),为什么不省略这一部分呢?只需绘制条形图的轮廓,不使用任何填充颜色。

代码语言:javascript
运行
复制
ggplot(ab.tab, aes(x=Length, y=Abundance, group=Sequence)) +
  geom_bar(stat='identity', colour="black", fill=NA)

票数 18
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9227389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档