我正在尝试使用 csv 数据在 ggplot2 中绘制热图,遵循 casbon 的解决方案
问题是 x-label 尝试重新排序。例如,如果我在该示例数据中交换标签 COG0002 和 COG0001,x-label 仍然按排序顺序出现(cog0001、cog0002、cog0003.... cog0008)。
有没有办法防止这种情况?我希望它像 csv 文件一样被订购
谢谢
pp
我正在尝试使用 csv 数据在 ggplot2 中绘制热图,遵循 casbon 的解决方案
问题是 x-label 尝试重新排序。例如,如果我在该示例数据中交换标签 COG0002 和 COG0001,x-label 仍然按排序顺序出现(cog0001、cog0002、cog0003.... cog0008)。
有没有办法防止这种情况?我希望它像 csv 文件一样被订购
谢谢
pp
如果我记得,当使用默认级别参数调用 factor(x) 时,级别设置为级别 = 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) 保留了数据中的出现顺序。
如果您想直接从 csv 文件中保留订单:
foomelt$COG <- factor(foomelt$COG, levels = unique(as.character(foo[[1]])))
您是否尝试在绘图之前重新排序因子水平?例如
foomelt$COG = factor(foomelt$COG,levels(foomelt$COG)[c(2,1,3:8)])
(我现在不能尝试,所以我不能确定它是否有效)