大家大概都对如下信息图并不陌生,该图用100%堆积面积图的方式来表现不同时期不同国家人数所占的比例。这是一种很有意思的表达方式,而面积图也是很常用的数据图表,现在让我们一起来看看如何在R里用ggplot2和plot.area来制作一个面积图。
 
        
       在制作图表之前,首先我们先创建一些随机示例数据。R代码如下:
 
  1.  # 创建随机数
    set.seed(3)
    # 创建时间序列(0-20的time step)
    t.step<-seq(0,20)
    # 创建十组变量名(从a到j)
    grps<-letters[1:10]
    # 创建一个由随机数组成的十组变量的时间序列
    grp.dat<-runif(length(t.step)*length(grps),5,15)
    # 为绘图而创建所需的dataframe
    grp.dat<-matrix(grp.dat,nrow=length(t.step),ncol=length(grps))
    grp.dat<-data.frame(grp.dat,row.names=t.step)
       数据结果如图所示:
    
    接下来,我们用plot.area来绘制一个简易的面积图,代码如下:
  1.  source("https://gist.github.com/fawda123/6589541/raw/8de8b1f26c7904ad5b32d56ce0902e1d93b89420/plot_area.r")
    plot.area(grp.dat)
    效果如下:
 
 
    而对于plot.area,有很多参数可以进行调整来得到不同效果的图,比如颜色,坐标名称,是否100%堆积等。具体参数设置可参考如下:
    
    若我们调整颜色:
  1.  plot.area(grp.dat,col=c('red','lightgreen','purple'))
    得到的效果如下:
   接下来我们看看如何用ggplot2来绘制一个面积图。在绘图之前,首先我们需要转换我们的数据格式,需要将多个列汇总到一个变量列(variable)和一个数值列(value), 转置数据的代码如下:
  1.  p.dat<-data.frame(step=row.names(grp.dat),grp.dat,stringsAsFactors=F)
    p.dat<-melt(p.dat,id='step')
    p.dat$step<-as.numeric(p.dat$step)
   接下来,我们需要导入ggplot2,以及绘制面积图,代码如下:
  1.  # 导入包
    require(ggplot2)
    require(reshape)
    require(gridExtra) # 绘制面积图
    p<-ggplot(p.dat,aes(x=step,y=value))
    p1<-p + geom_area(aes(fill=variable))+ theme(legend.position="bottom")
    p2<-p + geom_area(aes(fill=variable),position='fill')
 
   我们来看一下p1和p2分别的效果:
  
 
             
 
 
    当然,geom有更多好玩的应用,具体可以戳:http://docs.ggplot2.org/current/geom_area.html
 
 
 
 

初探ggplot2 geom__制作面积图的更多相关文章

  1. ggplot2绘制Excel所有图

    出处:https://brucezhaor.github.io/blog/2016/06/13/excel2ggplot/#%E5%89%8D%E8%A8%80 目录 前言 1.用到的包 2.数据准备 ...

  2. 第四篇:R语言数据可视化之折线图、堆积图、堆积面积图

    折线图简介 折线图通常用来对两个连续变量的依存关系进行可视化,其中横轴很多时候是时间轴. 但横轴也不一定是连续型变量,可以是有序的离散型变量. 绘制基本折线图 本例选用如下测试数据集: 绘制方法是首先 ...

  3. Tableau绘制漏斗图、甘特图、瀑布图、镶边面积图、阴影坡度图

    Tableau绘制漏斗图.甘特图.瀑布图.镶边面积图.阴影坡度图 本文首发于博客冰山一树Sankey,去博客浏览效果更好.直接右上角搜索该标题即可 一. 漏斗图 数据源 1.1 分色直条漏斗图 (1) ...

  4. 在Excel中制作雷达图

    雷达图的作用 雷达图是专门用来进行多指标体系比较分析的专业图表.从雷达图中可以看出指标的实际值与参照值的偏离程度,从而为分析者提供有益的信息.雷达图一般用于成绩展示.效果对比量化.多维数据对比等等,只 ...

  5. 用Excel制作热图(heatmap)的方法

    http://jingyan.baidu.com/article/64d05a0240ec75de55f73bd8.html 利用Excel 2010及以上版本的"条件格式"--& ...

  6. javascript曲线图和面积图Line & Area chart控件功能及下载

    Line & Area chart 控件是一款新型的.可用性极强的曲线图和面积图产品.一个您网站的访问者可以放大他感兴趣的一段区域,打开和关闭数值气球,并可显示和隐藏图表.您能创建简单.堆积. ...

  7. excel具有制作甘特图的功能

    1.Excel最大功能:数据处理.统计分析. 2.数据有效性验证: 长数字输入方法,文本前面加英文"'"(单引号)或使用文本转换. 身份证号:数据.数据有效性.文本长度. 性别:数 ...

  8. JFreeChart在制作折线图

    JFreeChart在制作折线图的时候可以使用两种不同的方式 package Line; import java.awt.Color; import java.awt.Font; import org ...

  9. python批量制作雷达图

    老板要画雷达图,但是数据好多组怎么办?不能一个一个点excel去画吧,那么可以利用python进行批量制作,得到样式如下: 首先制作一个演示的excel,评分为excel随机数生成: 1 =INT(( ...

随机推荐

  1. MySQL之架构与历史(一)

    MySQL架构与历史 和其他数据库系统相比,MySQL有点与众不同,它的架构可以在多种不同的场景中应用并发挥好的作用,但同时也会带来一点选择上的困难.MySQL并不完美,却足够灵活,它的灵活性体现在很 ...

  2. datagrid的修改和删除功能的实现

    1.修改 双击,进入一行的编辑状态的功能的实现 2.删除 3.扩展easyui的datagrid,添加动态增加或删除Editor的方法 (1)背景要求: 对于某一列,比如密码,动态增加时候,是可以编辑 ...

  3. Windows Server 2012之活动目录域服务的卸载

    Windows Server 2012之活动目录域服务的卸载 2012-07-11 06:27:35 标签:Windows Server 2012 活动目录域服务 卸载 原创作品,允许转载,转载时请务 ...

  4. C#入门篇6-1:字符串操作 char常用的函数

    //char 字符的常见操作 public static void FChar() { //判定字符的类别 char ch1 = 'a';//使用小引号 bool bl = true; bl = ch ...

  5. Django框架学习-01Django介绍

    01-Django介绍 02-HTTP协议介绍 01-Django介绍 1.什么是Web框架? 随着Web最新发展趋势的不断升级,Web项目开发也越来越难,而且需要花费更多的开发时间.所以,Web程序 ...

  6. CSU-1982 小M的移动硬盘

    CSU-1982 小M的移动硬盘 Description 最近小M买了一个移动硬盘来储存自己电脑里不常用的文件.但是他把这些文件一股脑丢进移动硬盘后,觉得这些文件似乎没有被很好地归类,这样以后找起来岂 ...

  7. 我爱学 Python 之文件

    读取文件 假设你已经在某个文件夹下创建了 "test.txt" 文件,且里面有一些内容,那你在当前位置输入 Python3,进入到交互模式,然后执行下面的操作: >>& ...

  8. JVM虚拟机系列(三)Class文件格式

  9. maven国内镜像

    <?xml version="1.0" encoding="UTF-8"?> <!--Licensed to the Apache Softw ...

  10. 求中位数为K的区间的数目

    给定一个长为 $n$ 的序列和常数 $k$,求此序列的中位数为 $k$ 的区间的数量.一个长为 $m$ 的序列的中位数定义为将此序列从小到大排序后第 $\lceil m / 2 \rceil$ 个数. ...