2010-06-07 7 views
6

내가ggplot2 heatmap : 레이블 순서를 유지하는 방법은 무엇입니까?

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

에 문제를 casbon의 솔루션 다음 CSV 데이터를 사용하여 ggplot2의 히트 맵을 그릴 노력하고있어 X-라벨 자체 다시 정렬을 시도합니다. 예를 들어, 해당 예제 데이터에서 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

기본 수준 인수를 사용하여 factor (x)를 호출하면 수준은 수준 = sort (고유 (x))로 설정됩니다.

levels = unique (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" "K" 「A」 "w", "I"는

가 가

[20] "P", "V", "C", "N", "t", "L", "H"

당신이 설정 수준에 있음을 볼 수있다 = unique (x)는 데이터에서 발생 순서를 유지합니다.

관련 문제