运行ggplot()和geom_line()函数,并分别制定一个变量映射给x和y
ggplot(BOD,aes(x=Time,y=demand))+geom_line()
当x对应因子型变量时,必须使用命令aex(group=1)以确保ggplot知道这些点属于一组
BOD1<-factor(BOD1$Time)
ggplot(BOD1,aes(x=Time,y=demand,group=1))+geom_line()
可以运行ylim()设定y轴范围,或者运行expand_limit()扩展y轴的范围。
ggplot(BOD,aes(x=Time,y=demand))+geom_line()+ylim(0,max(BOD$demand))
ggplot(BOD,aes(x=Time,y=demand))+geom_line+expand_limit(y=0)
向折线添加数据标记
在代码中加上geom_point()
ggplot(BOD,aes(x=Time,y=demand))+geom_line()+geom_point()
绘制多重折线图
方法:
在分别设定一个映射给x和y的基础上,再将另一个(离散型)变量映射给颜色(col),或者线性(linetype)即可
library(plyr)#用于加载ddply函数,构造新的数据集#
tg<-ddply(ToothGrowth,c("supp","dose"),summarise,length=mean(len))
#supp映射给颜色#
ggplot(tg,aes(x=dose,y=length,col=supp))+geom_line()
#supp映射给线型#
ggplot(tg,aes(x=dose,y=length,linetype=supp))+geom_line()
tg
1 OJ 0.5 13.23
2 OJ 1.0 22.70
3 OJ 2.0 26.06
4 VC 0.5 7.98
5 VC 1.0 16.77
6 VC 2.0 26.14
如果x变量是因子,你必须同时告诉ggplot()用来分组的变量。
折线图的x轴既可以对应连续型变量也可以对应离散型变量。
有时候,映射给x的变量虽然被储存在数值型变量,但被看作分类变量来处理。本例中,dose变量有三个取值:0.5,1,2.如果你想将其按分类变量而不是连续型变量来处理,那么运行factor()函数将其转化为因子。
ggplot(tg,aes(x=factor(dose),y=length,col=supp,group=supp))+geom_line()
注意,不可缺少group=supp语句,否则ggplot不知如何将数据组合在一起,绘制折线图,从而会报错。
ggplot(tg,aes(x=factor(dose),y=length,col=supp))+geom_line()
geom_path: Each group consists of only one observation. Do you need to adjust the group aesthetic?
当分组不正确时会遇见的另一种问题是,折线图会变成锯齿状
ggplot(tg,aes(x=dose,y=length))+geom_line()
导致这种情况的原因在于x在每个位置都对应多个顶,ggplot()误以为这些点属于同一组数据而将其用一根折线相连,结果形成了锯齿状折线图。如果将任意离散型变量映射给col或者linetype,ggplot()会以其分组变量对数据进行分组,如果你想借助其他变量对数据进行分组则需要使用group。
折线图上,可以更改数据标记的属性。shape和fill等
ggplot(tg,aes(x=dose,y=length,shape=supp))+geom_line()+geom_point(size=4)
ggplot(tg,aes(x=dose,y=length,fill=supp))+geom_line()+geom_point(size=4,shape=21)
对于数据点折线堆积,将其分开的方法
ggplot(tg,aes(x=dose,y=length,shape=supp))+geom_line(position = position_dodge(0.2))+geom_point(position = position_dodge(0.2),size=4)
使数据点相互错开,避免重叠。
修改线条样式:
通过设置线型(linetype),线宽(size)和颜色(colour)参数可以分别修改折线的线性,线宽和颜色。
ggplot(BOD,aes(x=Time,y=demand))+geom_line(linetype="dashed",size=1,col="blue")
修改数据标记样式
在函数aes外设定函数geom_point()的大小(size)颜色(col)填充色(fill)即可
ggplot(BOD,aes(x=Time,y=demand))+geom_line()+geom_point(size=4,shape=22,col="black",fill="pink")