如何在ggplot中向图添加图例

时间:2019-05-29 10:32:08

标签: r ggplot2 legend

您好,有一些代码可以模拟高斯过程。请有人帮我在图的右上角添加图例。我想说明每种线型/颜色的不同参数值,例如l = 1,l = 5,l = 10。谢谢。

# simulate a gaussian process
simGP = function(K){
  n = nrow(K)
  U = chol(K) # cholesky decomposition
  z = rnorm(n)
  c(t(U) %*% z)
}

# choose points to simulate the covariance.
x = seq(-1, 1, length.out = 500)


# Exponential kernel ------------------------------------------------------



kernel_exp = function(x, l = 1) {
  d = as.matrix(dist(x))/l
  K = exp(-d)
  diag(K) = diag(K) + 1e-8
  K
}

{y1 = simGP(kernel_exp(x,l=10))
y2 = simGP(kernel_exp(x,l=1))
y3 = simGP(kernel_exp(x,l=0.1))
data1 <- as.data.frame(x,y1)
data2 <- as.data.frame(x,y2)
data3 <- as.data.frame(x,y3)
df=data.frame(data1,data2,data3)

ggplot() + 
  geom_line(data=data1, aes(x=x, y=y1), color="green4", linetype = "twodash", size=0.5) + 
  geom_line(data=data2, aes(x=x, y=y2), color='red', linetype="longdash", size=0.5) +
  geom_line(data=data3, aes(x=x, y=y3), color='blue') +
  scale_color_manual(values = colors) +
  theme_classic() +
  labs(x='input, x',
       y='output, f(x)')+
  theme(axis.text=element_text(size=16),
        axis.title=element_text(size=14))}

1 个答案:

答案 0 :(得分:0)

您可以使用数据框变量对线型和颜色进行分组。 如果要指定颜色和线型,请使用scale_color_discretescale_linetype_discrete

y1 = simGP(kernel_exp(x,l=10))
y2 = simGP(kernel_exp(x,l=1))
y3 = simGP(kernel_exp(x,l=0.1))
data1 <- data.frame(x, y = y1, value = "10")
data2 <- data.frame(x, y = y2, value = "1")
data3 <- data.frame(x, y = y3, value = "0.1")
df=rbind(data1,data2,data3)

ggplot(data = df, aes(x=x, y=y, color = value, linetype = value, group = value)) + 
  geom_line(size=0.5) + 
  theme_classic() +
  labs(x='input, x',
       y='output, f(x)')+
  theme(axis.text=element_text(size=16),
        axis.title=element_text(size=14))