概述
折线图和面积图属于时间相关的周期性图表,既往我们已经介绍了使用ggplot绘制简单折线图的,今天我们继续使用我们的GDP数据来进一步深入绘制折线图,数据来源于网址:
http://www.icane.cn/voice/V-%B4%F3%CE%C020140826.htm
复制以后对数据进行了简单的整理,我们先导入数据和包
数据非常简单China代表中国,Jap代表日本,year代表年份
先把时间变成日期格式
bc$year<-as.Date(bc$year)
假如我们只想绘制我们国家的GDP曲线
ggplot(bc, aes(x =year, y =China) )+
geom_area(fill="#FF6B5E",alpha=0.75)+
geom_line(color="black",size=0.75)+
scale_x_date(date_labels = "%Y",date_breaks = "4 year")+
xlab("Year")+
ylab("gdp")+
theme( axis.title=element_text(size=10,face="plain",color="black"),
axis.text = element_text(size=10,face="plain",color="black"))
我们可以对曲线进一步美化,以颜色的深浅来代表GDP的改变情况
先要把数据转成长格式
bc<-melt(bc,id=c("year"),
measure.vars = (c("China","Jap")),
variable.name = "variable",
value.name = "value") ##ID为固定不变的变量,measure.vars为需要整合的变量
设置曲线插补点
x<-as.numeric(bc$year)
newdata<-data.frame(spline(x,bc$value,n=1000,method= "natural"))##进行平滑处理
重新转成日期数据
newdata$date<-as.Date(newdata$x,origin = "1962-07-01")##设置一个起始时间
最后绘图
ggplot(newdata, aes(x =date, y = y) )+
geom_bar(aes(fill=y,colour=y),stat = "identity",alpha=1,width = 1)+
geom_line(color="black",size=0.5)+
scale_color_gradientn(colours=brewer.pal(9,'Reds'),name = "Value")+
scale_x_date(date_labels = "%Y",date_breaks = "4 year")+
xlab("Year")+
ylab("Value")+
guides(fill=FALSE)+
theme( axis.title=element_text(size=10,face="plain",color="black"),
axis.text = element_text(size=10,face="plain",color="black"),
legend.position = c(0.12,0.75),
legend.background = element_blank())
我们也可以使用颜色映射方法到面积填充,比较差异
重新导入数据
bc<-read.csv("E:/r/test/gdp.csv",sep=',',header=TRUE)
bc$year<-as.Date(bc$year)
names(bc)
mydata1<-bc
设置最大值和最小值
mydata1$ymin<-apply(mydata1[,c(1,2)], 1, min)
mydata1$ymax<-apply(mydata1[,c(1,2)], 1, max)
作图,先做一张单色的
ggplot(mydata1, aes(x =year))+
geom_ribbon( aes(ymin=ymin, ymax=ymax),alpha=0.5,fill="white",color=NA)+
#geom_area(aes(fill=variable),alpha=0.5,position="identity")+
geom_line(aes(y=China,color="#FF6B5E"),size=0.75)+#color="black",
geom_line(aes(y=Jap,color="#00B2F6"),size=0.75)+#color="black",
scale_x_date(date_labels = "%Y",date_breaks = "4 year")+
xlab("Year")+
ylab("gdp")+
scale_colour_manual(name = "Variable",
labels = c("China", "Jap"),
values = c("#FF6B5E", "#00B2F6"))+
theme( axis.title=element_text(size=10,face="plain",color="black"),
axis.text = element_text(size=10,face="plain",color="black"),
legend.position = c(0.15,0.8),
legend.background = element_blank())
下面做一张彩色的,因为要进行GDP比较,所以先要设置一下最大最小值
mydata1$ymin1<-mydata1$ymin
mydata1$ymin1[as.integer((mydata1$China-mydata1$Jap)>0)]=NA
mydata1$ymax1<-mydata1$ymax
mydata1$ymax1[as.integer((mydata1$China-mydata1$Jap)>0)==0]=NA
mydata1$ymin2<-mydata1$ymin
mydata1$ymin2[as.integer((mydata1$China-mydata1$Jap)<=0)==0]=NA
mydata1$ymax2<-mydata1$ymax
mydata1$ymax2[as.integer((mydata1$China-mydata1$Jap)<=0)==0]=NA
导入R包ggridges并作图
library(ggridges)
ggplot(mydata1, aes(x=year)) +
geom_ridgeline_gradient( aes(y=ymin, height = ymax-ymin, fill = ymax-ymin)) +
geom_line(aes(y=China),color="black",size=0.75)+#color="black",
geom_line(aes(y=Jap),color="black",size=0.75)+#color="black",
scale_fill_gradientn(colours= brewer.pal(9,'RdBu'),name = "Value")+
theme(legend.position = c(0.15,0.8),
legend.background = element_blank())
总的来说ggplot做得是非常漂亮的
最后
以上就是优秀毛衣为你收集整理的ggplot绘制时间相关性折线图和面积图(2)的全部内容,希望文章能够帮你解决ggplot绘制时间相关性折线图和面积图(2)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复