我有包含10个样本的数值对数据:
data = dget(url("https://git.io/vCTpG"))
数据看起来像这样:
sampleB sampleA ol labelA labelB facetA facetB
2409 2409 100 2409|B 2409|B B B
2409 2413 0 2413|A 2409|B A B
2409 2414 0 2414|A 2409|B A B
2409 2417 0 2417|C 2409|B C B
2409 2411 0 2411|A 2409|B A B
2409 2418 0 2418|B 2409|B B B
2409 2416 0 2416|C 2409|B C B
2409 2412 4 2412|B 2409|B B B
2409 2415 0 2415|C 2409|B C B
2409 2410 19 2410|A 2409|B A B
... ... ... ... ... ... ...
我想将
ol
的值可视化为热力图:library(ggplot2)
ggplot(data = data, mapping = aes(x=labelA, y=labelB)) +
geom_tile(mapping = aes(fill=ol)) +
scale_fill_gradient(low = "white", high = "black") +
theme(legend.position = "none") +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
现在,我想将这个10x10的热力图按照每个样本所关联的类别(在此示例中为A,B
或C
)进行结构化。但是,如果我使用facet_grid
...
last_plot() + facet_grid(facetA~facetB)
...这将导致一个30x30的热图,而不是一个被分成3个类别的10x10的热图(仍然只显示100个值)。我记得使用以下方法进行了修复:
last_plot() + facet_grid(facetA~facetB, scales = "free", space = "free")
然而,过去我无法再次重现这个结果。希望得到的解决方案应该像这样(这是通过图像编辑器制作的,不是 ggplot 生成的):
即一个重新排序、分组为10x10矩阵的图像。
2409|B
上,你期望看到什么?自然地,它是空白的。 - tonytonovlast_plot() + facet_grid(facetB~facetA, scales = "free")
。 - user20650