- 在R语言ggplot2包中,有的时候需要将不同的数据汇总在一张图上面,此时,应该有两种方法,我们考虑如下的数据框:
时间 流失用户 新用户
1月份 4531 15108
2月份 4695 8290
3月份 5695 9479
4月份 6013 8690
5月份 4919 9216
6月份 6019 10336
7月份 7100 8968
8月份 7148 8783
-
数据框保存在变量x0中
- 我们想在一张图上同时画 时间+流失用户 、 时间+新用户 的两张折线图,来分析用户的流失与新增的情况
此时,有两种方法来搞定该图:
- 我们想在一张图上同时画 时间+流失用户 、 时间+新用户 的两张折线图,来分析用户的流失与新增的情况
利用ggplot的图层语法来搞定多重图层的叠加将多重数据放在同一个数据框中
#使用代码:
ggplot(x0)+geom_line(aes(x = 时间,y=流失用户,group=1),color="chartreuse3")+
geom_line(aes(x=时间,y=新用户,group=1),color="red")+
简单主题+
labs(title="2016年广电网络广州用户流失分析")
- 此处将两个映射分别放在了两个aes()中,数据框是同一个,另外需要注意group=1的使用,因为时间变量是一个因子变量,所以需要使用group=1来绘制折线图
- 注意到此时图片中是没有对两根折线定义做出解释的,必须通过手动的添加标签来解释两根折线
通过因子变量将color添加到映射中来画出两根折线图
- 此时,首先我们需要利用tidyr包(或者reshape2包将数据框变形,从宽的数据变成长的数据),使用代码:
x0_0 <- gather(x0,key = 用户类型,value = 人数,流失用户,新用户)
#得到数据:
时间 用户类型 人数
1月份 流失用户 4531
2月份 流失用户 4695
3月份 流失用户 5695
4月份 流失用户 6013
5月份 流失用户 4919
6月份 流失用户 6019
7月份 流失用户 7100
8月份 流失用户 7148
1月份 新用户 15108
2月份 新用户 8290
3月份 新用户 9479
4月份 新用户 8690
5月份 新用户 9216
6月份 新用户 10336
7月份 新用户 8968
8月份 新用户 8783
#对于该数据的第一列和第二列,我们应该将其转化为因子变量
x0_0[,2] <- as.factor(x0_0[,2])
ggplot(x0_0,aes(x=时间,y=人数,color=用户类型,group=用户类型))+geom_line()
- 此时发现图中新用户是绿色折线,流失用户是红色折线,我们想更换一下折线的颜色,此时应该调整因子变量的因子水平
2.再次绘图得到
x0_0[,2] <- factor(x0_0[,2],levels = c("新用户","流失用户"))
#再次作图
ggplot(x0_0,aes(x=时间,y=人数,color=用户类型,group=用户类型))+
geom_line()+
简单主题+
labs(title="2016年广电网络广州用户流失分析")
3.最后得到图