r - 按 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 值没有那么低)。见下文:
解决方案
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)
推荐阅读
- powershell - 用于删除文件名中具有连续编号的文件的批处理脚本达到一定数量
- php - 要求用户在访问第二张表格之前填写第一张表格?(更改密码)
- android - 在 android altBeacon didRangeBeaconsInRegion 中,信标大小始终显示 0。怎么了?
- django - 按多个字段排序
- node.js - 如何判断在带有节点后端的发布请求中单击了哪个按钮
- reactjs - 如何模拟 Web 控制台以在 React 应用程序中显示 javascript 代码
- c# - 如何在 ASP.NET Core 中实现设置页面?
- python - 烧瓶 request.environ.get('HTTP_REFERER', "") 的 fastApi 模拟是什么?
- teradata - 加载前需要更改数据类型
- python - Python Kivy ScrollView size_hint的问题