r - 在 ggplot2 中手动显示图例
问题描述
我通过相互叠加在一个图中绘制两个回归模型。但我无法显示图例。我正在使用代码:
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"))
如何在此处手动显示图例?
解决方案
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 非常擅长绘制你给它的东西。通常,最好将事物组合到一个数据框中,并使用特定的列来区分事物。
推荐阅读
- python - 绘制受简单圆形轨道影响的流场 - 双曲吸引子,在极坐标中给出,在笛卡尔坐标系中 - Python
- linux - Bash 脚本监控日志,匹配关键字然后发送命令,恢复监控
- javascript - 在运行时从文件中动态加载函数
- angular - 带有弹簧启动的角度6中的文件上传或图像上传
- php - 如何每隔 3 个逗号分割字符串,它们之间有文本?
- javascript - Selenium - 在 NodeJS 中使用 selenium-webdriver 库与现有浏览器会话进行交互
- excel - 如何在 SOAP UI 开源或操作系统/免费版本中添加数据源?
- c# - 如何将带参数的函数绑定到 C# 中的包中
- vba - VBA - 将工作表添加到变量并移动到新工作簿
- apache - 使用 Apache mod rewrite 修改查询字符串