博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初探ggplot2 geom__制作面积图
阅读量:6035 次
发布时间:2019-06-20

本文共 1399 字,大约阅读时间需要 4 分钟。

    大家大概都对如下信息图并不陌生,该图用100%堆积面积图的方式来表现不同时期不同国家人数所占的比例。这是一种很有意思的表达方式,而面积图也是很常用的数据图表,现在让我们一起来看看如何在R里用ggplot2和plot.area来制作一个面积图。
 
        
       在制作图表之前,首先我们先创建一些随机示例数据。R代码如下:
 
  1. 1 # 创建随机数 2 set.seed(3)  3 # 创建时间序列(0-20的time step) 4 t.step<-seq(0,20)  5 # 创建十组变量名(从a到j) 6 grps<-letters[1:10]  7 # 创建一个由随机数组成的十组变量的时间序列 8 grp.dat<-runif(length(t.step)*length(grps),5,15)  9 # 为绘图而创建所需的dataframe10 grp.dat<-matrix(grp.dat,nrow=length(t.step),ncol=length(grps))11 grp.dat<-data.frame(grp.dat,row.names=t.step)
  2.  
       数据结果如图所示:
    
    接下来,我们用plot.area来绘制一个简易的面积图,代码如下:
  1. 1 source("https://gist.github.com/fawda123/6589541/raw/8de8b1f26c7904ad5b32d56ce0902e1d93b89420/plot_area.r")2 plot.area(grp.dat)

     

    效果如下:
 
 
    而对于plot.area,有很多参数可以进行调整来得到不同效果的图,比如颜色,坐标名称,是否100%堆积等。具体参数设置可参考如下:
    
    若我们调整颜色:
  1. 1 plot.area(grp.dat,col=c('red','lightgreen','purple'))
    得到的效果如下:
   接下来我们看看如何用ggplot2来绘制一个面积图。在绘图之前,首先我们需要转换我们的数据格式,需要将多个列汇总到一个变量列(variable)和一个数值列(value), 转置数据的代码如下:
  1. 1 p.dat<-data.frame(step=row.names(grp.dat),grp.dat,stringsAsFactors=F)2 p.dat<-melt(p.dat,id='step')3 p.dat$step<-as.numeric(p.dat$step)
   接下来,我们需要导入ggplot2,以及绘制面积图,代码如下:
  1. 1 # 导入包2 require(ggplot2)3 require(reshape)4 require(gridExtra)6 # 绘制面积图7 p<-ggplot(p.dat,aes(x=step,y=value))8 p1<-p + geom_area(aes(fill=variable))+ theme(legend.position="bottom")9 p2<-p + geom_area(aes(fill=variable),position='fill')

     

 
   我们来看一下p1和p2分别的效果:
  
 
             
 
 
    当然,geom有更多好玩的应用,具体可以戳:
 
 
 
 

转载于:https://www.cnblogs.com/bicoffee/p/4330793.html

你可能感兴趣的文章
快准车服完成3000万元A+轮融资,年底将开始B轮融资
查看>>
让我去健身的不是漂亮小姐姐,居然是贝叶斯统计!
查看>>
MySQL 数据约束
查看>>
我的友情链接
查看>>
SERVLET容器简介与JSP的关系
查看>>
《服务器SSH Public Key认证指南》-补充
查看>>
我的友情链接
查看>>
Java break continue return 的区别
查看>>
算法(Algorithms)第4版 练习 1.3.4
查看>>
jquery easyUI checkbox复选项获取并传后台
查看>>
浅析NopCommerce的多语言方案
查看>>
设计模式之简单工厂模式
查看>>
C++中变量的持续性、链接性和作用域详解
查看>>
2017 4月5日上午
查看>>
Google Chrome开发者工具
查看>>
第一阶段冲刺报告(一)
查看>>
使用crontab调度任务
查看>>
【转载】SQL经验小记
查看>>
zookeeper集群搭建 docker+zk集群搭建
查看>>
Vue2.5笔记:Vue的实例与生命周期
查看>>