为 ggcorrplot 的轴文本添加注释

Add annotation to axis text for ggcorrplot

我正在使用 ggcorrplot 绘制大型数据集的相关矩阵。问题是很难看到轴文本的标签(在下面的示例中,例如 sample1)。与每个标签关联,我有另一个标签(在下面的示例中,例如 normal 表示 sample1)。是否可以在样本标签的每个级​​别周围用括号或框来注释轴文本标签?

cor.vals <- cor(matrix(rnorm(100), nrow = 10))
colnames(cor.vals) <- paste0("sample", 1:10)
rownames(cor.vals) <- colnames(cor.vals)
ggcorrplot::ggcorrplot(cor.vals)
labels.samples <- c(rep("normal", 5), rep("drug", 5))

x 轴也是如此。我的数据更大,类别更多,因此手动添加它们并不是真正的选择。

无法直接在 ggplot 中实现您想要的确切外观。您可以使用 grid 手动添加形状来完成此操作,但我注意到您觉得这不是一个真正的选择。

虽然这需要修改 ggcorrplot 的输出:

p <- ggcorrplot::ggcorrplot(cor.vals)

p$data$facets_y <- factor(rep(labels.samples, length = nrow(p$data)), c("normal", "drug"))
p$data$facets_x <- rep(labels.samples, each = length(labels.samples))
p$coordinates <- coord_cartesian()

p + facet_grid(facets_x~facets_y, scales = "free", switch = "both") +
  theme(panel.spacing = unit(-0.02, "npc"),
        axis.ticks.y.left = element_blank(),
        strip.background = element_rect(color = c("black")))