> setwd('E:/Rworking ')
> wendu2<-read.table("最低日温.csv",sep=',',header=T,stringsAsFactors=F)
> head(wendu2)
Date wendu
1 1981/1/1 20.7
2 1981/1/2 17.9
3 1981/1/3 18.8
4 1981/1/4 14.6
5 1981/1/5 15.8
6 1981/1/6 15.8
我们得到了一个时间和温度值的数据框,我们来看一下每列数据的类型
> class(wendu2$Date
+ )
[1] "character"
> class(wendu2$wendu)
[1] "character"
都是字符串类型,因此在作图之前,我们要对数据进行转换,首先要知道我们需要什么类型的数据。
我们要以时间为横坐标,温度数值为纵坐标,因此进行如下转换
rm(list = ls())
library(ggplot2)
#读取数据
wendu2<-read.table("最低日温.csv",sep=',',header=T,stringsAsFactors=F)
wendu2$Date<-as.Date(wendu2$Date)#将日期转换成日期型数据
wendu2$wendu<-as.numeric(wendu2$wendu)#将value转换成数值型数据
接下来用ggplot2包绘图,
这篇博客写的十分详尽
https://www.cnblogs.com/jiangmiaomiao/p/7073001.html
> p <- ggplot(wendu1, aes(x=wendu1$Date, y=wendu1$wendu,group = 1)) +
+ geom_line()+
+ xlab("")
> p
现在对其进行优化,给x,y轴添加标签,将线的颜色设置为蓝色
> p <- ggplot(wendu1, aes(x=wendu1$Date, y=wendu1$wendu,group = 1)) +
+ geom_line(color="steelblue")+
+ xlab("时间")+
+ ylab('温度')
> p
>
继续优化,改变x轴的坐标写法
p <- ggplot(wendu1, aes(x=wendu1$Date, y=wendu1$wendu,group = 1)) +
geom_line(color="steelblue")+
xlab("时间")+
ylab('温度')+
scale_x_date(limit=c(as.Date("1981-01-01"),as.Date("1990-12-31")),date_labels = "%m-%Y")
添加参考线和标签
p <- ggplot(wendu1, aes(x=wendu1$Date, y=wendu1$wendu,group = 1)) +
geom_line(color="steelblue")+
xlab("时间")+
ylab('温度')+
scale_x_date(limit=c(as.Date("1981-01-01"),as.Date("1990-12-31")),date_labels = "%m-%Y")+
geom_hline(yintercept=mean(wendu1$wendu,na.rm = T), color="orange", size=.5)+
geom_vline(xintercept=mean.Date(wendu1$Date), color="orange", size=.5)+
annotate(geom="text", x=wendu1$Date[wendu1$wendu==max(wendu1$wendu)], y=max(wendu1$wendu), label="历年最大值")
p
数据太多,看起来不是很直观,接下来可以只画两年的数据
rm(list = ls())
library(ggplot2)
wendu2<-read.table("最低日温.csv",sep=',',header=T,stringsAsFactors=F)
#将日期转换成日期型数据
wendu2$Date<-as.Date(wendu2$Date)
#将value转换成数值型数据
wendu2$wendu<-as.numeric(wendu2$wendu)
wendu1<-na.omit(wendu2)
p <- ggplot(wendu1, aes(x=wendu1$Date, y=wendu1$wendu,group = 1)) +
geom_line(color="green")+
xlab("时间")+
ylab('温度')+
scale_x_date(limit=c(as.Date("1981-01-01"),as.Date("1982-12-31")),date_labels = "%m-%Y")
p