我正在尝试使用casbon的解决方案在ggplot2中绘制热力图,使用csv数据。
问题是x-label试图重新排序。例如,如果我在该示例数据中交换标签COG0002和COG0001,则x-label仍按排序顺序显示(cog0001,cog0002,cog0003... cog0008)。是否有任何方法可以防止这种情况发生?我希望它按照csv文件中的顺序排序。
谢谢
pp
我正在尝试使用casbon的解决方案在ggplot2中绘制热力图,使用csv数据。
问题是x-label试图重新排序。例如,如果我在该示例数据中交换标签COG0002和COG0001,则x-label仍按排序顺序显示(cog0001,cog0002,cog0003... cog0008)。pp
如果我没记错的话,当使用默认的levels参数调用factor(x)时,级别被设置为levels = sort(unique(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" "u" "m" "s" "z" "d" "k" "a" "w" "i"
[20] "p" "v" "c" "n" "t" "l" "h"
您可以看到,将levels设置为unique(x)可以保留数据中出现的顺序。
foomelt$COG <- factor(foomelt$COG, levels = unique(as.character(foo[[1]])))
unique(as.character(foo[[1]]))
。 - Marek您尝试在绘图之前重新排序因子水平了吗? 例如:
foomelt$COG = factor(foomelt$COG,levels(foomelt$COG)[c(2,1,3:8)])
我现在无法尝试,所以不能确定它是否有效。