R语言ggplot2包之画折线图

引言

折线图一般用于描述一维变量随着某一连续变量变化的情况,连续变量通常为时间。换句话说,折线图最适合描述时间序列数据的变化情况。当然随着离散变量变化也是可以的,不过这个离散变量必须是有序的。

画一条折线图

一条基本的折线图还是比较简单的,只要在ggplot里的aes传入x,y数据且geom指定为line线即可。如果x是连续变量,直接传入即可。如果x是离散变量,此时x需要因子化,并在aes里设定group参数为1.

线可以是实线,也可以是点状的,可以用个linetpye进行设定,参数可以选择solid, dashed, dotted等。

library(gcookbook)
library(ggplot2)
#连续变量的情况
ggplot(BOD, aes(x=Time, y=demand)) + geom_line()
#离散变量的情况
BOD1 <- BOD # 赋值数据
BOD1$Time <- factor(BOD1$Time)#变量因子化
ggplot(BOD1, aes(x=Time, y=demand, group=1)) + geom_line(linetype="dotted")

当然如果需要改变y轴的范围,可以用在后面加入ylim(a, b))进行设置。
R语言ggplot2包之画折线图_第1张图片
R语言ggplot2包之画折线图_第2张图片

给折线图增加点

有时候我们需要在折线图上显示对应x轴的点数据,从而可以更加清晰的辨别原始数据,这特别适合数据比较稀疏的情况,比如上述没有6的数据情况。我们直接在代码后面加上geom_point()就可以了。如果想改变点的大小和形状,控制size和shape这两个参数就可以了。

ggplot(BOD, aes(x=Time, y=demand)) + geom_line() + geom_point(size=4, shape=20)

R语言ggplot2包之画折线图_第3张图片

画多条折线图

有时候我们想对某一离散变量进行分组,画出多个折线图进行比较。

supp1=c("OJ","OJ","OJ","VC","VC","VC")
dose1=c(0.5,1.0,2.0,0.5,1.0,2.0)
length1=c(13.23,22.70,26.06,7.98,16.77,26.14)
tgg=data.frame(supp1,dose1,length1)
ggplot(tgg, aes(x=factor(dose1), y=length1, colour=supp1,group=supp1)) + geom_line(size=2)#x为药剂剂量,并非连续型变量

R语言ggplot2包之画折线图_第4张图片
有时候你还想在比较的两条线给加上数据点,可以在aes里面设置shape或者fill参数,两种方法得出的图大致相同,除了点形状差异。前者,两条线上的点形状各异,后者点形状相同。

#设置shape参数
ggplot(tgg, aes(x=dose1, y=length1, color=supp1,shape=supp1)) + geom_line() +geom_point(size=4)
#设置fill参数
ggplot(tgg, aes(x=dose1, y=length1, color=supp1,fill=supp1)) + geom_line() +geom_point(size=4)

R语言ggplot2包之画折线图_第5张图片
R语言ggplot2包之画折线图_第6张图片
细心的你会发现,两条线上游数据重叠了,如果想区分开,使用position_dodge函数是个好办法。

ggplot(tgg, aes(x=dose1, y=length1, shape=supp1)) +
geom_line(position=position_dodge(0.2)) + # Dodge lines by 0.2
geom_point(position=position_dodge(0.2), size=4)#控制两线各向左向右移0.2的聚类,线也移,点也移,永远不分开。

R语言ggplot2包之画折线图_第7张图片
基本的画法就这些,个人认为画的质量可以与EXCEL相媲美。

你可能感兴趣的:(R语言学习与应用,可视化,R语言,ggplot2,可视化,折线图)