Как я могу сделать легенду в ggplot2 такой же высоты, что и мой сюжет?

Я создал простой график в R (версия R версия 3.0.1 (2013-05-16)), используяggplot2 (версия 0.9.3.1), которая показывает коэффициенты корреляции для набора данных. В настоящее время цветовая полоса легенды в правой части графика является частью всего размера графика.

Мне бы хотелось, чтобы цветовая панель легенды была такой же высоты, как и сюжет Я думал, что я мог бы использоватьlegend.key.height чтобы сделать это, но я обнаружил, что это не так. Я исследовалgrid пакетunit и обнаружил, что там были некоторые нормализованные единицы, но когда я их попробовал (unit(1, "npc")), цветная полоса была слишком высокой и ушла со страницы.

Как я могу сделать легенду такой же высоты, как и сам сюжет?

Полный автономный пример ниже:

# Load the needed libraries
library(ggplot2)
library(grid)
library(scales)
library(reshape2)

# Generate a collection of sample data
variables = c("Var1", "Var2", "Var3")
data = matrix(runif(9, -1, 1), 3, 3)
diag(data) = 1
colnames(data) = variables
rownames(data) = variables

# Generate the plot
corrs = data
ggplot(melt(corrs), aes(x = Var1, y = Var2, fill = value)) +
  geom_tile() +
  geom_text(parse = TRUE, aes(label = sprintf("%.2f", value)), size = 3, color = "white") +
  theme_bw() +
  theme(panel.border = element_blank(),
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1),
        aspect.ratio = 1,
        legend.position = "right",
        legend.key.height = unit(1, "inch")) +
        labs(x = "", y = "", fill = "", title = "Correlation Coefficients") +
        scale_fill_gradient2(limits = c(-1, 1), expand = c(0, 0),
                             low = muted("red"),
                             mid = "black",
                             high = muted("blue"))

Ответы на вопрос(2)

Ваш ответ на вопрос