Я пытаюсь создать тепловую карту корреляции, где ось x перемещается вверх с помощью cowplot::switch_axis_position
. У меня есть метки оси разной длины, и я хочу, чтобы метки были выровнены по левому краю (или, скорее, по нижнему краю, потому что они повернуты на 90 градусов). Хотя мне удается выровнять метки, они сдвинуты намного выше графика.
library(reshape2)
library(ggplot2)
library(cowplot)
# some toy data
set.seed(1)
mydata <- mtcars[, c(1, 3, 4, 5, 6, 7)]
# to show difference in justification better, make names of unequal length
names(mydata) = paste0(sample(c("mtcars_", ""), 6, replace = TRUE), names(mydata))
cormat <- round(cor(mydata), 2)
melted_cormat <- melt(cormat)
head(melted_cormat)
Сначала график, на котором ось x перемещена вверх, а метки центрированы по вертикали:
plot <- ggplot(data = melted_cormat, aes(x=Var1, y=Var2, fill=value)) +
geom_tile() +
theme_bw(base_size=20) + xlab("") + ylab("") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 0.5))
ggdraw(switch_axis_position(plot, 'x'))
Затем я использую тот же код, что и выше, но с hjust = 0
вместо выравнивания по левому краю текста оси x. Он действительно выравнивает текст, но текст странно перемещен далеко от графика, поэтому имена переменных обрезаются:
Есть идеи, как это исправить?