我对ggplot很新,但我喜欢系统地构建你的情节。尽管如此,我还是想要达到预期的效果。我可以复制你有分类数据的地块。然而,对于我的使用,我经常需要将模型拟合到某些观察结果,然后在组合图中突出显示它们。使用通常的绘图功能,我会这样做:
library(splines)
set.seed(10)
x <- seq(-1,1,0.01)
y <- x^2
s <- interpSpline(x,y)
y <- y+rnorm(length(y),mean=0,sd=0.1)
plot(x,predict(s,x)$y,type="l",col="black",xlab="x",ylab="y")
points(x,y,col="red",pch=4)
points(0,0,col="blue",pch=1)
legend("top",legend=c("True Values","Model values","Special Value"),text.col=c("red","black","blue"),lty=c(NA,1,NA),pch=c(4,NA,1),col=c("red","black","blue"),cex = 0.7)
我最大的问题是如何为ggplot构建数据框,然后自动绘制图例?在这个例子中,我如何将其转换为ggplot以获得类似的情节?或者ggplot不是为这种情节制作的?
请注意,这只是一个玩具示例。通常,模型值来自更复杂的模型,以防万一你想在ggplot中使用stat。
答案 0 :(得分:3)
这里的关键部分是你可以通过给出一个字符串来映射aes
中的颜色,这将产生一个图例。在这种情况下,不需要在data.frame中包含特殊值。
df <- data.frame(x = x, y = y, fit = predict(s, x)$y)
ggplot(df, aes(x, y)) +
geom_line(aes(y = fit, col = 'Model values')) +
geom_point(aes(col = 'True values')) +
geom_point(aes(col = 'Special value'), x = 0, y = 0) +
scale_color_manual(values = c('True values' = "red",
'Special value' = "blue",
'Model values' = "black"))