Тепловая карта ggplot2: как сохранить порядок меток? - PullRequest
6 голосов
/ 07 июня 2010

Я пытаюсь построить тепловую карту в ggplot2, используя данные CSV, следуя решению Casbon в

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

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

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

спасибо

pp

Ответы [ 3 ]

5 голосов
/ 07 июня 2010

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

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

Например:

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

[1] "g" "j" "o" "x" "f"

levels(factor(x))

[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o "" p "" q "" r "" s "

[20] "t" "u" "v" "w" "x" "y" "z"

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

[1] "g" "j" "o" "x" "f" "y" "r" "q" "b" "e" "u" "m" "s" "z" "d "" k "" a "" w "" i "

[20] "p" "v" "c" "n" "t" "l" "h"

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

4 голосов
/ 07 июня 2010

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

foomelt$COG <- factor(foomelt$COG, levels = as.character(foo[[1]]))
2 голосов
/ 07 июня 2010

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

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

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

...