R语言 使用ggplot2为多条线添加图例
在这篇文章中,我们将看到如何使用ggplot2在R编程语言中为多线图添加图例。首先,如果之前没有在R Studio中安装ggplot2包,你需要安装它。
用于创建线状图的函数是 。
- geom_line( ) : 绘制线条并指定其大小、形状、颜色等。
语法
geom_line(mapping=NULL, data=NULL, stat=”identity”, position=”identity”, …)
- geom_point( ) : 它用于在线的末端添加点。它用于指定点的形状、大小和颜色。
语法
geom_point(mapping=NULL, data=NULL, stat="identity", position="identity", ...)
使用中的数据集:
让我们首先绘制没有任何修改的初始图形,这样就可以看出差异。
例子
# Inserting data
vacc <- data.frame(catgry=rep(c("Covishield", "Covaxin"), each=2),
dose=rep(c("D1", "D2"),2),
slots=c(33, 45, 66, 50))
library(ggplot2)
# Plotting basic lines with multiple groups
plt <- ggplot(data=vacc, aes(x=dose, y=slots, group=catgry))+
geom_line()+
geom_point(color="red", size=3)+
labs(x="Doses",y="Free Slots")+
ggtitle("Vaccine Details")
plt
输出
线条图被成功绘制。我们不能直接解释这些线,即哪条线属于Covaxin,哪条线属于Covishield,只看上面的图。因此,我们需要一些 图例 来帮助我们在组的基础上对这些线进行分离。
添加图例
在R中,没有像Excel和其他脚本语言那样在多条线的情况下直接添加图例的方法。因此,为了添加图例,我们需要在 着色的 基础上将线条分配到多个组 。 关键的想法是通过给每条线分配不同的颜色来区分这些线,并将它们分成不同的组。现在,线条将被归入不同的组,图例将被自动添加到绘图中。
方法1:默认分组
在这里,我们直接在geom_line()中使用颜色属性,并使用将用于区分的属性。
语法
geom_line(aes(color=group_var))
group_var是数据框中用于区分线条的变量名称。
例子
# Inserting data
vacc <- data.frame(catgry=rep(c("Covishield", "Covaxin"), each=2),
dose=rep(c("D1", "D2"),2),
slots=c(33, 45, 66, 50))
library(ggplot2)
# Plotting basic line with multiple groups
plt <- ggplot(data=vacc, aes(x=dose, y=slots, group=catgry))+
geom_line()+
geom_point(color="red", size=3)+
labs(x="Doses",y="Free Slots")+
ggtitle("Vaccine Details")
plt
# Adding legends
plt+geom_line(aes(color=catgry))
输出
方法2:手动分组
R为我们提供了 scale_color_manual( ) 函数,帮助我们手动分配颜色。我们可以使用这个函数为线条手动分配颜色名称或颜色代码。
语法
scale_color_manual(..,value,aesthetics=”color”)
参数
- color : 颜色代码,以 “#RRBBGG “或简单的颜色名称的形式书写。
- values : 形成一个矢量,用于分配给用户。形成一个向量,将颜色分配给多条线。
它与前面的方法类似,但这里用户可以根据自己的选择灵活地给线条分配颜色。
例子
# Inserting data
vacc <- data.frame(catgry=rep(c("Covishield", "Covaxin"), each=2),
dose=rep(c("D1", "D2"),2),
slots=c(33, 45, 66, 50))
library(ggplot2)
# Plotting basic line with multiple groups
plt <- ggplot(data=vacc, aes(x=dose, y=slots, group=catgry))+
geom_line()+
geom_point(color="black", size=3)+
labs(x="Doses",y="Free Slots")+
ggtitle("Vaccine Details")
plt
# Adding legends manually
plt+geom_line(aes(color=catgry))+
scale_color_manual(values=c("#006000", "blue"))
输出