如何解决如何为lm中的stat_smooth创建置信区间和最佳拟合线的图例ggplot2
您好,我有一个很好的回归图,置信区间为95%,最适合拟合线,但是似乎无法添加图例,我在各种位置尝试过aes,scale_colour_manual,但无济于事。 到目前为止,我的代码是
ggplot(bats,aes(x=Days,y=AI))+geom_point(size=2,alpha=0.5) +
xlab("Number of survey days") +
ylab("Bat Activity Index")+
stat_smooth( method = "lm",formula = y~x,size = 1,col = "red",level = 0.95,alpha=0.5)+
theme_light() +
ggtitle("Regression test between Bat Activity Index and number of survey days")
我希望图例显示置信区间(阴影区域)和最佳拟合线(红色)。
提前谢谢!
解决方法
在ggplot2
中,创建图例的方法是在aes()
中指定您的美观。在这种情况下,您需要标记两个独立的美学元素:color
应该包含一个标记为“最佳拟合线”的值,而fill
应该包含一个标记为“信心”的值。间隔”。
您的数据集中没有一列适用于这两种美学,但是如果您在aes(color=...,fill=...)
中输入字符串,则该字符串将用作标签并创建美学。为了你。当我使用与您自己的格式匹配的虚构数据集时,请观察下面的工作方式。请特别注意,col="red"
已从原始代码中删除。如果不删除它,它将覆盖我们放在color=
内的aes()
。
library(ggplot2)
set.seed(1234)
bats <- data.frame(
Days=sample(1:30,200,replace=TRUE),AI=rnorm(200,mean=50,sd=20)
)
p <-
ggplot(bats,aes(x=Days,y=AI))+geom_point(size=2,alpha=0.5) +
xlab("Number of survey days") +
ylab("Bat Activity Index")+
stat_smooth(
aes(color="Line of Best Fit",fill="Confidence Interval"),method = "lm",formula = y~x,size = 1,level = 0.95,alpha=0.5
)+
theme_light() +
ggtitle("Regression test between Bat Activity Index and number of survey days")
p
好吧,现在我们有了图例,但可能看起来不像预期的那样。颜色图例具有红线和灰色背景,而填充图例具有红色背景和蓝线!这是因为ggplot2
认识到"Line of Best Fit"
和"Confidence Interval"
是不相同的字符串,因此为两者创建了不同的美学价值。无论如何,您都需要指定正确的color
和fill
值。
指定颜色:如果您在fill=
中指定color=
和geom_smooth()
,它将覆盖我们在aes()
中创建的颜色,您将删除图例。因此,我们将使用scale_color_manual()
和scale_fill_manual()
指定值。我们也不需要图例的标题,因此也可以将其删除。
更改关键字形的外观:您还希望更改图例的外观。对于“最佳拟合线”,您想从图例图标(称为“关键字形”)中删除填充。对于“置信区间”,我们要删除该行,仅显示灰色框。我们可以使用guides()
中的override.aes=
和guide_legend()
参数来完成所有操作。
图例的位置:最后,我们希望将图例移到底部以具有更好的整体外观,可通过legend.position=
中的theme()
元素进行访问。如果您想将它们保持在右边,则可能需要修改theme()
和legend.spacing
的{{1}}元素,以使它们更靠近一点。
将所有内容放在一起,我们得到以下信息:
legend.margin
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。