【发布时间】:2021-08-20 12:52:57
【问题描述】:
我正在 ggplot2 中创建热图,我想重新排列 Y 轴。
查看过去的帖子后,我了解如何根据 X 轴和 Y 轴变量重新排序,但我想根据数据框中的第三个未绘制的非数字变量重新排序 Y 轴.
我的热图显示术语与治疗,但每个术语都有一个源数据库 - 这就是我想要订购术语的地方。 如您所见,术语 A 和 D 来自数据库 2,术语 B 来自数据库 1,术语 C 来自数据库 3。 所以y轴的顺序应该是Term B、Term A、Term D、Term C。 目前排序为 Term D, C, B, A
编辑:这实际上只是我的数据的一部分,我有很多术语,所以不想手动指定顺序。不过我没有太多数据库,所以很乐意手动订购。
library(ggplot2)
terms <- rep(c("Term A", "Term B", "Term C", "Term D"), 3)
treatments <- c(rep("Treatment 1", 4), rep("Treatment 2", 4), rep("Treatment 3", 4))
source <- rep(c("Database 2", "Database 1", "Database 3", "Database 2"), 3)
data <- c(1.923598e-06, 1.307195e-04, 1.307195e-01, 1.307195e-04, 1.740412e-03, 3.446243e-05, 3.834140e-02, 2.654140e-03, 2.976543e-04, 1.111198e-06, 1.376595e-04, 2.923598e-06)
df <- data.frame(terms, treatments, source, data)
ggplot(df, aes(x=treatments, y=terms, fill=-log10(data))) +
geom_tile()
【问题讨论】: