我正在一个图中绘制两个回归模型,彼此重叠。但我无法显示传奇。我正在使用代码:
ggplot(df, aes(x)) + # basic graphical object
geom_smooth(aes(y = predict(regressor1)), colour = "black") +
geom_smooth(aes(y = predict(regressor2)), colour = "blue") +
labs(x = "Distance from the scanner", y = "RMSE (m)") +
scale_colour_manual(name = "", values = c("black" = "Moo", "blue" = "Coo"),
guide = 'legend') +
guides(colour = guide_legend(override.aes = list(linetype = c(1, 0),
shape = c(NA, 16)))) +
theme_classic() +
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.title.x = element_text(size = 16),
axis.title = element_text(size = 16),
axis.text.x = element_text(size = 14, colour = "black"),
axis.text.y = element_text(size = 14, colour = "black"))
如何手动显示图例?
答案 0 :(得分:0)
ggplot2的技巧通常是只有一个数据帧的所有绘图。您最好将regressor1和regressor2合并为数据框中的一列,并设置另一个说明他们所属的组。
像这样的东西
regressor_frame <- data.frame(Predictions = c(predict(regressor1), predict(refressor2)),
Regressor = c(rep(1, length(regressor1)), rep(2, length(regressor2))
)
所以现在我们有一个数据框,其中一列存储您的预测,另一列存储预测来自哪个回归!
然后将这些列绑定到当前数据框
df <- cbind(df, regressor_frame)
这将起作用,因为它们具有相同的行数!
然后在geom_smooth
参数中我们可以添加一个名为colour
的新变量,它将分别绘制它们。用
geom_smooth
行
geom_smooth(aes(y=Predictions, colour = Regressor))
然后你的色阶参数看起来像这样
scale_colour_manual(values = c("Black", "Blue"))
那应该能满足你的需求。
更一般地说,如果您希望某些内容依赖于数据的属性,那么它应该位于aes
函数中。在这种情况下,它来自哪个回归量会影响它,所以你应该使用它。
另外,ggplot2非常擅长策划你给它的东西。通常情况下,您最好将事物组合到一个数据框中,并使用特定的列来区分事物。