Я пробовал несколько способов сортировки этой тепловой карты, но ничего не работает.
Я хочу отсортировать карту тепла по оси 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)")
Вот как выглядит сюжет:

Я хочу отсортировать ось X от 0 до 10. Любые подсказки, как?
Данные, которые я использую для построения графика:
> 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")
UPDATE:
Некоторые пользователи предложили использовать as.numeric(scz_results2$Decile)
, чтобы исправить этот результат. Однако сюжет, который я получаю, является странным, а именно, 6-й дециль в средней части внезапно изменяется (его красный цвет больше, чем 10-го дециля, даже если значение p не столь низкое). Смотрите ниже:
