2010-06-07 4 views
6

Я пытаюсь построить Heatmap в ggplot2, используя данные CSV следующие решениями casbon вggplot2 heatmap: как сохранить заказ этикетки?

http://biostar.stackexchange.com/questions/921/how-to-draw-a-csv-data-file-as-a-heatmap-using-numpy-and-matplotlib

проблемой является й-метка попытаться пересортируйте сам. Например, если я заменяю ярлык COG0002 и COG0001 в данных этого примера, x-метка все равно выдается в порядке сортировки (cog0001, cog0002, cog0003 .... cog0008).

Есть ли вообще предотвратить это? Я хочу, чтобы это можно заказать как в CSV файл

благодаря

С.

+0

Ниже приведены полезные ответы. Вот осторожность, глядя на это, вы можете встретить «упорядоченный фактор». Не используйте его, если вы не знаете, что делаете. Ввод уровней в определенном порядке и использование упорядоченного коэффициента - это не одно и то же. Например, упорядоченные факторы приведут к тому, что программное обеспечение для моделирования по умолчанию будет использовать полиномиальные, а не лечебные эффекты. – John

ответ

4

Если вы хотите сохранить заказ непосредственно из файла CSV:

foomelt$COG <- factor(foomelt$COG, levels = as.character(foo[[1]])) 
+1

В этом случае это не проблема, но там должно быть 'unique (as.character (foo [[1]])) в случае дубликатов записей. – Marek

2

Пробовали ли вы переназначение уровней фактора перед построением графика? , например.

foomelt$COG = factor(foomelt$COG,levels(foomelt$COG)[c(2,1,3:8)]) 

(я не могу попробовать это прямо сейчас, так что я не могу быть уверен, что он работает)

+0

Я не думаю, что мог бы заказать вручную, так как мои данные имеют около 100 и более баллов. –

5

Если я помню, при вызове множителя (x) с аргументом уровней по умолчанию уровни устанавливаются как levels = sort (unique (x)).

Вы можете переопределить это действие, установив уровни = unique (x).

Например:

set.seed(1) 
x = sample(letters, 100, replace = TRUE) 
head(x, 5) 

[1] "г" "J" "о" "х" "F"

levels(factor(x)) 

[1] "а", "б" «C "" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"

[20] "Т" "и" "V", "ш", "х", "у", "г"

levels(factor(x, levels = unique(x))) 

[1] "g" "j" "o" "x" "f" "y" "r" "q" "b" "e" "u" "m" "s" "z" "d" «к» «а» «ш», «я»

[20] «р», «V», «С» «п» «т», «л», «ч»

можно видеть, что установление уровня = unique (x) сохраняет порядок вхождения в данные.

Смежные вопросы