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)相关推荐
- 绘制商务感十足的折线图和面积图
今天接着大家讲解一下如何使用Excel绘制折线图与面积图. 先上样图,大家可以看一下: 今天这两个图都是单系列的折线图与面积图.折线图与面积图一般都用来描述在时间序列上数据的变化情况.在一些特定的情况 ...
- 解决在excel绘制折线图或面积图中横坐标时间间隔不相等问题
本人在基于一些国际文件的预测绘制2020-2070碳排放的折线图时,遇到了横坐标刻度调整相关的问题.当前我有2020-2070年,以五年为间隔的碳排放值.数据如下: year value 2017 1 ...
- 用Echarts绘制折线图-----堆积面积图和堆积折线图
堆积折线图的作用是用于显示每一数据所占大小随时间或有序类别而变化的趋势,展示的是部分与整体的关系. 堆积面积图是在折线图中添加面积图,属于组合图形中的一种.堆积面积图又被称为堆积区域图,它强调数量随时 ...
- 【python数据分析(24)】Matplotlib库基本图形绘制(1)(线形图、柱状图、堆叠图、面积图、填图、饼图)
0. 前期准备: 导入三个必备的库,推荐使用jupyter notebook或者spyder编程环境 import numpy as npimport pandas as pdimport matpl ...
- python画饼图柱状图_荐【python数据分析(24)】Matplotlib库基本图形绘制(1)(线形图、柱状图、堆叠图、面积图、填图、饼图)...
0. 前期准备: 导入三个必备的库,推荐使用jupyter notebook或者spyder编程环境 import numpy as np import pandas as pd import mat ...
- pyecharts数据可视化—雷达图、折线图、面积图
①绘制雷达图: from pyecharts.charts import Radar from pyecharts import options as optsradar_data1 = [[4300 ...
- 使用d3.v5实现折线图与面积图
d3最新是V5版的,比起V2的API变动了不少,写下我实现过程 效果图: 面积图: 折线图: 目录结构: <!DOCTYPE html> <html lang="en&qu ...
- D3 二维图表的绘制系列(七)堆叠面积图
上一篇: 基础折线图 https://blog.csdn.net/zjw_python/article/details/98210977 下一篇: 曲线图 https://blog.csdn.net/ ...
- pyecharts-动态可视化(2) 柱状图 时间轴/折线/堆叠/水印/瀑布图
pyecharts中 柱状图的形式 应该基本就在这了!!代码可以直接运行~超级详细的注释,还有动图呢!! 在制作柱状图可能会遇到的组合,所需用到的代码均做了注释,用的V1版本.非常的小白,非常的友好! ...
最新文章
- 【分块】#6277. 数列分块入门 1(区间修改、单点查询)
- python与图书编辑
- 第四范式天枢入选毕马威首届“领先消费科技50”榜单
- 前端vscode插件合集
- android代码旋转屏幕,Android Activity源码分析--windowmanager屏幕旋转研究
- python日历模块_Python日历模块| prmonth()方法与示例
- 1SVS2K 2.3.2 发布!
- 罗永浩将重返高科技行业创业 将涉足AR/VR/MR领域
- 程序员过关斩将--你的业务是可变的吗
- wamp php 安装redis,wampServer的php安装Redis 扩展
- Java第二章:数据类型和运算符
- python实训报告5000字_20193420 实验一 《Python程序设计》实验一报告
- 编程经历的一些思考——一个工作4年老鸟的职业思考(转载)
- OFFICE技术讲座:关于坐标、位置的术语说明
- 区块链:深入浅出零知识证明
- three.js 文本_使用Three-bmfont-text在Three.js中创建文本
- 61850协议服务器端开发,基于IEC61850标准的服务端程序的设计与实现
- CentOS7.0设置中文输入法
- android触摸屏原理,智能手机触摸屏的工作原理是如何的
- 考研复试C程序设计基础
热门文章
- 单商户商城系统功能拆解09—微页面
- 安卓预装软件卸载教程
- 编程英语:常见代码错误 error 语句学习(12)
- python实现千牛客服自动回复语_客服自动回复设置技巧,别再傻傻全部自己回复了...
- 视觉SLAM十四讲——第四讲李群与李代数
- c语言香农编码文件压缩,谈谈熵编码无损压缩的原理
- 如何更改计算机管理员账户名称,win10系统管理员名称怎么改_win10管理员账户名怎么修改...
- java-php-python-ssm网上拍卖系统计算机毕业设计
- 自适应动态规划matlab,自适应动态规划ADP
- fx3u4ad一adp说明书_三菱FX3U-4AD-ADP用户手册FX3U-4AD-ADP模拟控制版本手册 - 广州凌控...