Добавить метки оси в 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_discrete(name = "Attempt 1") до конца моего кода ggcorrplot, но он ничего не сделал.

2 ответа

Этого можно добиться с помощью {ggcorplot2}.

Хотя у разработчиков ggcorplot могут быть веские причины не включать метки осей (например, они не должны быть необходимы для попарной матрицы), есть определенные случаи, когда может иметь смысл указать метки осей и отметки осей. Например. при сравнении корреляций между двумя разными наборами переменных и исключении любых сравнений, сделанных внутри наборов.


ggcorrplot2::ggcorrplot() подавляет метки осей с помощью внутреннего использования следующего

      theme(axis.title = element_blank())

Если вы хотите переопределить это и предоставить метки осей, вы должны указать метки, которые нужно добавить, и повторно указать поведение 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))

График с измененной маркировкой оси

Вы должны переопределить поведение по умолчанию 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')
  )
Другие вопросы по тегам