如何在 ggplot2 中绘制多条线(附示例)


您可以使用以下基本语法在 ggplot2 中绘制多条线:

 ggplot(df, aes(x=x_var, y=y_var)) + 
  geom_line(aes(color=group_var)) +
  scale_color_manual(name=' legend_title ', labels=c(' lab1 ', ' lab2 ', ' lab3 '),
                     values=c(' color1 ', ' color2 ', ' color3 '))

这种特殊的语法在 ggplot2 中创建了一个包含三行的绘图。

此语法假定您的数据帧采用长格式

以下示例展示了如何在实践中在 ggplot2 中绘制多条线。

示例:在 ggplot2 中绘制多条线

假设我们在 R 中有以下数据框,其中包含有关三个不同商店在五个不同日期的销售数量的信息:

 #create data frame
df <- data. frame (day=c(1, 2, 3, 4, 5),
                 storeA=c(5, 6, 8, 8, 9),
                 storeB=c(3, 3, 4, 5, 7),
                 storeC=c(8, 10, 12, 12, 17))

#view data frame
df

  day storeA storeB storeC
1 1 5 3 8
2 2 6 3 10
3 3 8 4 12
4 4 8 5 12
5 5 9 7 17

该数据框目前采用宽格式。

然而,我们可以使用Tidyr包中的pivot_longer()函数来快速将数据转换为长格式:

 library (tidyr)

#convert data from wide to long format
df <- df %>% pivot_longer(cols=c(' storeA ', ' storeB ', ' storeC '),
                          names_to=' store ',
                          values_to=' sales ')

#view updated data frame
df

# A tibble: 15 x 3
     day store sales
      
 1 1 blindA 5
 2 1 storeB 3
 3 1 blindC 8
 4 2 blindA 6
 5 2 storeB 3
 6 2 storeC 10
 7 3 storeA 8
 8 3 storeB 4
 9 3 storeC 12
10 4 storeA 8
11 4 storeB 5
12 4 storeC 12
13 5 storeA 9
14 5 storeB 7
15 5 storeC 17

相关: R 中的ivot_longer() 简介

现在数据框是长格式,我们可以使用以下语法和 ggplot2 来绘制每个商店的销售额:

 library (ggplot2)

#plot sales by store
ggplot(df, aes(x=day, y=sales)) + 
  geom_line(aes(color=store)) +
  scale_color_manual(name=' Store ', labels=c(' A ', ' B ', ' C '),
values=c(' red ', ' purple ', ' steelblue '))

各个行显示每个商店每天的销售额。

请注意,我们使用scale_color_manual()函数在图的右侧创建自定义图例,以使线条更易于解释。

请随意修改此函数的参数,以创建完全按照您想要的方式显示的图例。

其他资源

以下教程解释了如何在 ggplot2 中执行其他常见任务:

如何在ggplot2中绘制平均值和标准差
如何使用 ggplot2 在绘图中添加水平线
如何在ggplot2中绘制趋势线

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注