我是靠谱客的博主 优秀毛衣,最近开发中收集的这篇文章主要介绍ggplot绘制时间相关性折线图和面积图(2),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

折线图和面积图属于时间相关的周期性图表,既往我们已经介绍了使用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)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部