将轴标签添加到 ggcorrplot?

Add Axis Labels to ggcorrplot?

如何向 ggcorrplot 添加轴标签?我有一个问卷的两次独立尝试之间的相关性图。 X 轴代表第一次尝试,Y 轴代表第二次尝试。我想标记轴以表明这就是此处所代表的内容。

我的代码如下所示:

corrQData <- round(cor(Attempt1, Attempt2), digits = 1)

ggcorrplot(corrQData, 
           outline.color = "white",
           ggtheme = theme_bw(),
           colors = c("#F8696B", "#FFEB84", "#63BE7B"),
           legend.title = "Correlation",
           lab = TRUE,
           lab_size = 3,
           tl.cex = 8,
           tl.srt = 0,
           title = "Correlation Between Questionnaire Attempts") +
  theme(plot.title = element_text(hjust = 0.5, size=10), legend.title = element_text(size = 10))

我的剧情是这样的:

我尝试将 + scale_x_discreet(name = "Attempt 1") 添加到我的 ggcorrplot 代码的末尾,但它没有做任何事情。

您必须覆盖 ggcorrplot 的默认行为,即不显示轴标签。通过添加带有 ggplot2::labs() 的标签(scale_x_discrete(name = ...) 也可以)并更改情节的主题

来做到这一点
library(ggcorrplot)
corrdata <- round(cor(mtcars), 1)

ggcorrplot(corrdata) + 
  ggplot2::labs(x = 'X label', y = 'Y label') +
  ggplot2::theme(
    axis.title.x = element_text(angle = 0, color = 'grey20'),
    axis.title.y = element_text(angle = 90, color = 'grey20')
  )

这可以使用 {ggcorrplot2} 来实现。

虽然 ggcorrplot 开发人员可能有充分的理由不包括轴标签(例如,成对矩阵不需要它们),但在某些情况下,希望指定轴标签和轴刻度可能是有意义的.例如。比较两组不同变量之间的相关性,并排除组内进行的任何比较时。


ggcorrplot2::ggcorrplot() 通过在内部使用以下内容来抑制轴标签

theme(axis.title = element_blank())

如果你想 over-rule 这个并提供轴标签,你必须指定要添加的标签和 re-specify axis.title 行为,例如

corrdata <- round(cor(mtcars), 1)

ggcorrplot2::ggcorrplot(corrdata) + 
  ggplot2::labs(x = 'Variable Set 1', y = 'Variable Set 2') +
  ggplot2::theme(axis.title = element_text())

也可以使用

手动指定轴刻度标签
corrdata <- round(cor(mtcars), 1)

ggcorrplot2::ggcorrplot(corrdata) + 
  ggplot2::labs(x = 'Variable Set 1', y = 'Variable Set 2') +
  ggplot2::theme(axis.title = element_text())+
  ggplot2::scale_x_continuous(breaks = 1:dim(corrdata)[1], labels = c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k"), 
      expand = c(0, 0))+
  ggplot2::scale_y_reverse(breaks = 1:dim(corrdata)[1], labels = c("l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v"), 
      expand = c(0, 0))

Plot with modified axis labeling