7

のcasbonのソリューションに従ってcsvデータを使用してggplot2でヒートマップをプロットしようとしています

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

4

3 に答える 3

7

思い出してください。デフォルトのlevels引数を使用してfactor(x)を呼び出すと、レベルはlevels = sort(unique(x))として設定されます。

level = 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" "u" "m" "s" "z" "d" "k "" a "" w "" i "

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

level = unique(x)を設定すると、データ内の出現順序が保持されることがわかります。

于 2010-06-07T15:25:56.840 に答える
6

csvファイルから直接注文を保持したい場合:

foomelt$COG <- factor(foomelt$COG, levels = unique(as.character(foo[[1]])))
于 2010-06-07T14:08:07.497 に答える
2

プロットする前に因子レベルを並べ替えてみましたか?例えば

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

(今は試すことができないので、うまくいくかどうかはわかりません)

于 2010-06-07T13:52:35.833 に答える