2010-06-07 15 views
6

Próbuję wykreślić mapę cieplną w ggplot2 przy użyciu danych csv następujące rozwiązanie casbon wggplot2 heatmap: jak zachować kolejność etykiet?

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

problem jest x-etykieta spróbować ponownie samego rodzaju. Na przykład, jeśli zamieściłem etykietę COG0002 i COG0001 w tych przykładowych danych, etykieta x nadal będzie pojawiać się w porządku sortowania (cog0001, cog0002, cog0003 .... cog0008).

Czy jest mimo to, aby temu zapobiec? Chcę to należy zamawiać w pliku csv

dzięki

pp

+0

Poniżej znajdują się dobre odpowiedzi. Oto uwaga, patrząc na to, możesz natknąć się na "uporządkowany czynnik". Nie używaj go, chyba że wiesz, co robisz. Umieszczenie poziomów w określonej kolejności i użycie uporządkowanego czynnika to nie to samo. Na przykład, uporządkowane czynniki spowodują, że niektóre programy do modelowania będą domyślnie przyjmować wielomian, a nie efekty leczenia. – John

Odpowiedz

4

Jeśli chcesz zachować kolejność bezpośrednio z pliku csv:

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

W tym przypadku problem nie występuje, ale w przypadku zduplikowanych wpisów powinno być "unique (as.character (foo [[1]]))". – Marek

2

Czy spróbować zmiany kolejności poziomów czynnika przed spisek? np.

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

(nie mogę spróbować go teraz, więc nie mogę mieć pewność, że działa)

+0

Nie sądzę, abym mógł ręcznie zamawiać, ponieważ moje dane mają około 100 i więcej punktów. –

5

Jeśli przywołuję, wywołując współczynnik (x) z domyślnym poziomem argumentów poziomy są ustawiane jako poziomy = sort (unikalne (x)).

Możesz zmienić to działanie, ustawiając poziomy = unikalne (x).

Na przykład:

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"

można zauważyć, że poziom ustawienie = unique (x) zachowuje kolejność występowania w danych.

Powiązane problemy