Упорядочивание стеков по размеру в стековой гистограмме ggplot2

Итак, у меня есть куча данных, которые я отобрал в качестве примера ниже:

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 слова каждой последовательности, но в действительности они имеют длину "Length". Я смотрю на обилие последовательностей для каждого класса размеров, которые у меня здесь есть. Кроме того, я хочу визуализировать долю изобилия, которую конкретная последовательность представляет в своем размерном классе. В настоящее время я могу построить гистограмму, как показано на рисунке:

ggplot(tab, aes(x=Length, y=Abundance, fill=Sequence)) 
  + geom_bar(stat='identity') 
  + opts(legend.position="none")

ggplot stacked bar graph of the sample data

Это хорошо для такого небольшого набора данных, но в моем реальном наборе данных около 1,7 миллиона строк. Это выглядит очень красочно, и я вижу, что определенные последовательности имеют преобладающее обилие в одном размерном классе, но это очень грязно.

Я хотел бы иметь возможность упорядочить цветные столбики для каждого размера по обилию последовательности. Т.е. столбики с самым высоким обилием в пределах своего столбика находятся внизу каждого столбика, а столбики с самым низким обилием - вверху. Так это будет выглядеть гораздо более презентабельно.

Есть идеи, как это сделать в ggplot2? Я знаю, что в aes() есть параметр "order", но я не могу понять, что он должен делать с данными в том формате, который у меня есть.

12
задан MattLBeck 10 February 2012 в 16:23
поделиться