如何在ggplot2中按两列分组(带有示例)
在 ggplot2 中创建绘图时,您可以使用以下基本语法按两列进行分组:
ggplot(df, aes(x=var1, y=var2, color=var3, shape=var4, group=interaction(var3, var4))) + geom_point() + geom_line()
此特定代码会生成一个线性图,其中点按数据框中的var3和var4列进行分组。
以下示例展示了如何在实践中使用此语法。
示例:在 ggplot2 中按两列分组
假设我们在 R 中有以下数据框,它显示了两个不同商店在进行两种不同促销活动时几周内的总销售额:
#create data frame
df <- data. frame (store=rep(c(' A ', ' B '), each= 8 ),
promo=rep(c(' Promo 1 ', ' Promo 2 '), each= 4 , times= 2 ),
week=rep(c(1:4), times= 4 ),
sales=c(1, 2, 6, 7, 2, 3, 5, 6, 3, 4, 7, 8, 3, 5, 8, 9))
#view data frame
df
store promo week sales
1 A Promo 1 1 1
2 A Promo 1 2 2
3 A Promo 1 3 6
4 A Promo 1 4 7
5 A Promo 2 1 2
6 A Promo 2 2 3
7 A Promo 2 3 5
8 A Promo 2 4 6
9 B Promo 1 1 3
10 B Promo 1 2 4
11 B Promo 1 3 7
12 B Promo 1 4 8
13 B Promo 2 1 3
14 B Promo 2 2 5
15 B Promo 2 3 8
16 B Promo 2 4 9
我们可以使用以下代码在ggplot2中创建折线图,其中数据值按商店和促销列进行分组:
library (ggplot2) #create line plot with values grouped by store and promo ggplot(df, aes(x=week, y=sales, color=store, shape=promo, group=interaction(store, promo))) + geom_point(size= 3 ) + geom_line()
结果是一个折线图,其中每条线代表商店和促销的每种组合的销售值。
特别是,四行代表以下组合的销售值:
- A店促销1
- A店促销2
- B店促销1
- B店促销1
图一侧的两个图例指示哪些线代表哪些组合。
其他资源
以下教程解释了如何在 ggplot2 中执行其他常见任务:
如何在ggplot2中旋转轴标签
如何在ggplot2中设置轴中断
如何在ggplot2中设置轴限制
如何更改ggplot2中的图例标签