R语言的ggplot2包是一个图层叠加的绘图工具,十分便捷,可实现多层次绘图,以下绘制多折线图的方式是较为推荐的一种方式。
#加载包
library(reshape2)#融合数据
library(ggplot2)#绘图工具
library(openxlsx)
#读入数据,此例中数据的格式为xlsx
mydata <- read.xlsx("M.xlsx")
在这里,数据读入之后的格式为初始格式,也就是大多数情况下我们的数据存放格式:
我们需要对这一数据进行融合操作:
mydata <- melt(mydata,id="Year")
按照年份对数据进行融合之后,就得到了我们绘图所要的数据:
我们能够看到,融合之后的数据为3列,这里的三个列名是自动生成的,year将默认为横轴title;variable将在绘图过程中默认为图例title,value将默认为纵轴title;如果需要对其进行改动,可在此处更改列名:
colnames(mydata) <- c("Year","sample","value")#更改列名
之后开始作图:
ggplot(data = mydata,aes(x=Year,y=value,group = sample,color=sample,shape=sample))+
geom_point()+
geom_line()+
xlab("Year")+#横坐标名称
ylab("数值")+#纵坐标名称
theme_bw() +#去掉背景灰色
theme(panel.grid.major=element_line(colour=NA),
panel.background = element_rect(fill = "transparent",colour = NA),
plot.background = element_rect(fill = "transparent",colour = NA),
panel.grid.minor = element_blank(),#以上theme中代码用于去除网格线且保留坐标轴边框
text = element_text(family = "STXihei"),#设置中文字体的显示
legend.position = c(.075,.915),#更改图例的位置,放至图内部的左上角
legend.box.background = element_rect(color="black"))+#为图例田间边框线
scale_x_continuous(limits = c(2000,2018),breaks = seq(2000,2018,1))#更改横坐标刻度值
#点击zoom查看大图
最终画出的图如下: