首页 > 解决方案 > 按 X 轴值排序热图

问题描述

我尝试了多种方法来对我拥有的这个热图进行排序,但没有任何效果。

我希望通过 x 轴(Decile列)对热图进行排序,但生成的排序看起来很奇怪。我的代码如下:

  ggplot(data = scz_results2, aes(x=reorder(Decile, sort(as.numeric(Decile))), y = Cell_Pair,fill = -log10(as.numeric(P_Value2)))) +
  geom_tile() +
  scale_fill_gradient(low="White", high="Red", name="-log10(P-Value)")

这是情节的样子:

在此处输入图像描述

我想从 0 到 10 对 X 轴进行排序。有什么线索吗?

我用来生成绘图的数据:

> str(scz_results2)
'data.frame':   33 obs. of  4 variables:
 $ Decile   : Factor w/ 11 levels "1","4","3","2",..: 1 2 3 4 5 6 7 8 9 10 ...
 $ Phenotype: chr  "Schizophrenia-(PGC3)" "Schizophrenia-(PGC3)" "Schizophrenia-(PGC3)" "Schizophrenia-(PGC3)" ...
 $ Cell_Pair: chr  "dSPNs_versus_iSPNs" "dSPNs_versus_iSPNs" "dSPNs_versus_iSPNs" "dSPNs_versus_iSPNs" ...
 $ P_Value2 : num  0.00026 0.00138 0.00482 0.00641 0.02998 ...



    > dput(scz_results2)
structure(list(Decile = structure(c(2L, 3L, 4L, 5L, 6L, 7L, 8L, 
9L, 10L, 11L, NA, 7L, 6L, 11L, 3L, 9L, 10L, 5L, 4L, 8L, 2L, NA, 
6L, 11L, 7L, 9L, 8L, 4L, 5L, 10L, 3L, 2L, NA), .Label = c("0", 
"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"), class = "factor"), 
    Phenotype = c("Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", "Schizophrenia-(PGC3)", 
    "Schizophrenia-(PGC3)"), Cell_Pair = c("dSPNs_versus_iSPNs", 
    "dSPNs_versus_iSPNs", "dSPNs_versus_iSPNs", "dSPNs_versus_iSPNs", 
    "dSPNs_versus_iSPNs", "dSPNs_versus_iSPNs", "dSPNs_versus_iSPNs", 
    "dSPNs_versus_iSPNs", "dSPNs_versus_iSPNs", "dSPNs_versus_iSPNs", 
    "dSPNs_versus_iSPNs", "eSPNs_versus_dSPNs", "eSPNs_versus_dSPNs", 
    "eSPNs_versus_dSPNs", "eSPNs_versus_dSPNs", "eSPNs_versus_dSPNs", 
    "eSPNs_versus_dSPNs", "eSPNs_versus_dSPNs", "eSPNs_versus_dSPNs", 
    "eSPNs_versus_dSPNs", "eSPNs_versus_dSPNs", "eSPNs_versus_dSPNs", 
    "eSPNs_versus_iSPNs", "eSPNs_versus_iSPNs", "eSPNs_versus_iSPNs", 
    "eSPNs_versus_iSPNs", "eSPNs_versus_iSPNs", "eSPNs_versus_iSPNs", 
    "eSPNs_versus_iSPNs", "eSPNs_versus_iSPNs", "eSPNs_versus_iSPNs", 
    "eSPNs_versus_iSPNs", "eSPNs_versus_iSPNs"), P_Value2 = c(0.000260199792609, 
    0.00138384156034, 0.00482250739633, 0.00640537675613, 0.0299780806176, 
    1, 1, 1, 1, 1, 1, 0.000191433497246, 0.00489292968901, 0.00754983630389, 
    0.026531288903, 0.0332365664972, 0.0481595900232, 1, 1, 1, 
    1, 1, 0.0030395402852, 0.00629441034153, 0.0100384998497, 
    0.0196763275176, 0.0225151330175, 1, 1, 1, 1, 1, 1)), .Names = c("Decile", 
"Phenotype", "Cell_Pair", "P_Value2"), row.names = c(208L, 209L, 
210L, 211L, 212L, 213L, 214L, 215L, 216L, 217L, 218L, 395L, 396L, 
397L, 398L, 399L, 400L, 401L, 402L, 403L, 404L, 405L, 548L, 549L, 
550L, 551L, 552L, 553L, 554L, 555L, 556L, 557L, 558L), class = "data.frame")

更新:

一些用户建议我用它as.numeric(scz_results2$Decile)来修复这个结果。然而,我得到的情节很奇怪,即中间部分的第 6 个十分位突然变化(它比第 10 个十分位更红,尽管 p 值没有那么低)。见下文:

在此处输入图像描述

标签: r

解决方案


txt <- "    Decile            Phenotype          Cell_Pair     P_Value
208      1 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 0.0002601998
209      4 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 0.0013838416
210      3 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 0.0048225074
211      2 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 0.0064053768
212      9 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 0.0299780806
213     10 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 1.0000000000
214      5 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 1.0000000000
215      7 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 1.0000000000
216      8 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 1.0000000000
217      6 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 1.0000000000
218      0 Schizophrenia-(PGC3) dSPNs_versus_iSPNs 1.0000000000
395     10 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 0.0001914335
396      9 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 0.0048929297
397      6 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 0.0075498363
398      4 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 0.0265312889
399      7 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 0.0332365665
400      8 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 0.0481595900
401      2 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 1.0000000000
402      3 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 1.0000000000
403      5 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 1.0000000000
404      1 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 1.0000000000
405      0 Schizophrenia-(PGC3) eSPNs_versus_dSPNs 1.0000000000
548      9 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 0.0030395403
549      6 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 0.0062944103
550     10 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 0.0100384998
551      7 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 0.0196763275
552      5 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 0.0225151330
553      3 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 1.0000000000
554      2 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 1.0000000000
555      8 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 1.0000000000
556      4 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 1.0000000000
557      1 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 1.0000000000
558      0 Schizophrenia-(PGC3) eSPNs_versus_iSPNs 1.0000000000
"
scz_results2 <- read.table(textConnection(txt), header = TRUE)
scz_results2$Decile <- factor(scz_results2$Decile, levels = 0:10, labels = 0:10)

plt <- ggplot(data = scz_results2, aes(
    x = Decile, 
    y = Cell_Pair,
    fill = -log10(as.numeric(P_Value)))) +
  geom_tile() +
  scale_fill_gradient(low="White", high="Red", name="-log10(P-Value)")
plot(plt)

在此处输入图像描述


推荐阅读