使用ggplot2为R中的多行添加图例
在本文中,我们将看到如何使用 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”,…)
使用中的数据集:
让我们首先绘制未经任何修改的初始图形,以便差异明显。
例子:
R
# 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
R
# 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))
R
# 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"))
输出:
成功绘制了线图。仅通过查看上图,我们无法直接解释这些线,即哪条线属于 Covaxin,而 Covishield 也是如此。因此,我们需要图例来帮助在组的基础上分离这些线。
添加图例
在像 Excel 和其他脚本语言一样的多行的情况下,R 中没有直接的方法来添加图例。因此,要添加图例,我们需要根据着色将线条分成多个组。关键思想是通过为每条线分配不同的颜色来区分线,并将它们分成不同的组。现在,线条将被分类到不同的组中,并且图例将自动添加到图中。
方法一:默认分组
在这里,我们直接使用 geom_line() 中的 color 属性和将用于区分的属性。
句法:
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))
输出:
方法二:手动分组
R 为我们提供了函数scale_color_manual( ) ,它有助于手动分配颜色。我们可以使用此函数手动为线条指定颜色名称或颜色代码。
Syntax:
scale_color_manual(..,values,aesthetics=”color”)
Parameter:
- color : Color code which is written in the form of “#RRBBGG” or simply Color name.
- values : Forming a vector to assign colors to multiple lines.
它类似于以前的方法,但在这里用户可以根据自己的选择灵活地为线条分配颜色。
例子:
电阻
# 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"))
输出: