ggplot2 heatmap:如何保存标签顺序?

时间:2010-06-07 13:24:05

标签: r ggplot2 heatmap

我正试图在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

3 个答案:

答案 0 :(得分:5)

如果我记得,当使用默认级别参数调用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“”我“

[20]“p”“v”“c”“n”“t”“l”“h”

您可以看到设置levels = unique(x)可以保留数据中出现的顺序。

答案 1 :(得分:4)

如果您想直接从csv文件中保留订单:

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

答案 2 :(得分:2)

您是否在绘图前尝试重新排序因子水平? e.g。

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

(我现在不能尝试,所以我不能确定它有效)