如何在R中的ggplot2中添加自定义图例

如何在R中的ggplot2中添加自定义图例,r,ggplot2,R,Ggplot2,我想绘制一个数据集,其中点的大小与x变量成比例,并且有一条95%预测区间的回归线。我编写的“示例”代码如下: # Create random data and run regression x <- rnorm(40) y <- 0.5 * x + rnorm(40) plot.dta <- data.frame(y, x) mod <- lm(y ~ x, data = plot.dta) # Create values for predict

我想绘制一个数据集,其中点的大小与x变量成比例,并且有一条95%预测区间的回归线。我编写的“示例”代码如下:

  # Create random data and run regression
  x <- rnorm(40)
  y <- 0.5 * x + rnorm(40)
  plot.dta <- data.frame(y, x)
  mod <- lm(y ~ x, data = plot.dta)

  # Create values for prediction interval
  x.new <- data.frame(x = seq(-2.5, 2.5, length = 1000))
  pred <- predict(mod,, newdata = x.new, interval = "prediction")
  pred <- data.frame(cbind(x.new, pred))

  # plot the data w/ regression line and prediction interval

  p <- ggplot(pred, aes(x = x, y = upr)) + 
    geom_line(aes(y = lwr), color = "#666666", linetype = "dashed") +
    geom_line(aes(y = upr), color = "#666666", linetype = "dashed") +
    geom_line(aes(y = fit)) + 
    geom_point(data = plot.dta, aes(y = y, size = x))
  p
#创建随机数据并运行回归

x正如Hack-R在提供的链接中所暗示的那样,您可以为
scale\u size()
设置分隔符和标签,使该图例更有意义

还可以通过将线型添加到
aes()
中,为所有
geom\u line()
调用构造图例,并使用
scale\u linetype\u manual()
设置值、分隔符和标签

 ggplot(pred, aes(x = x, y = upr)) + 
  geom_line(aes(y = lwr, linetype = "dashed"), color = "#666666") +
  geom_line(aes(y = upr, linetype = "dashed"), color = "#666666") +
  geom_line(aes(y = fit, linetype = "solid")) + 
  geom_point(data = plot.dta, aes(y = y, size = x)) +
  scale_size(labels = c("Eensy-weensy", "Teeny", "Small", "Medium", "Large")) +
  scale_linetype_manual(values = c("dashed" = 2, "solid" = 1), labels = c("95% PI", "Regression Line"))

正如所提供的链接中提到的Hack-R,您可以为
scale\u size()
设置分隔符和标签,使该图例更有意义

还可以通过将线型添加到
aes()
中,为所有
geom\u line()
调用构造图例,并使用
scale\u linetype\u manual()
设置值、分隔符和标签

 ggplot(pred, aes(x = x, y = upr)) + 
  geom_line(aes(y = lwr, linetype = "dashed"), color = "#666666") +
  geom_line(aes(y = upr, linetype = "dashed"), color = "#666666") +
  geom_line(aes(y = fit, linetype = "solid")) + 
  geom_point(data = plot.dta, aes(y = y, size = x)) +
  scale_size(labels = c("Eensy-weensy", "Teeny", "Small", "Medium", "Large")) +
  scale_linetype_manual(values = c("dashed" = 2, "solid" = 1), labels = c("95% PI", "Regression Line"))
可能的重复可能的重复