如何将变量放在ggplot2中的图例中

时间:2017-09-01 14:04:24

标签: r ggplot2 data-visualization

我想得到以下情节。Value of Cov(x,y)

那么,我如何使用ggplot将变量即cov(x,y)作为字符串放入图例?

1 个答案:

答案 0 :(得分:0)

我建议在单独的数据框中计算协方差,并使用协方差数据框中的值自定义色阶:

样本数据

library(dplyr)
library(ggplot2)

set.seed(999)

d <- data.frame(
  x = runif(60, 0, 100),
  z = rep(c(0, 1), each = 30)
) %>%
  mutate(
    y = x + 50 * z + rnorm(60, sd = 50),
    z = factor(z)
    )

这是基本图,每个值z都有单独的颜色:

ggplot(d, aes(x = x, y = y, color = z)) +
  geom_point() +
  stat_smooth(method = "lm", se = FALSE)

现在创建一个包含协方差值的较小数据框:

cov_df <- d %>%
  group_by(z) %>%
  summarise(covar = round(cov(x, y)))

提取协方差值并存储为字符向量:

legend_text <- as.character(pull(cov_df, covar))

控制色标以达到预期效果:

ggplot(d, aes(x = x, y = y, color = z)) +
  geom_point() +
  stat_smooth(method = "lm", se = FALSE) +
  scale_color_discrete(
    "Covariance",
    labels = legend_text
  )