大家大概都对如下信息图并不陌生,该图用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. 56、使用android studio(v1.3.*)修改包名 (rename package name)

    一.修改包名 ①选中目录,开始构造 在弹窗中选中Rename directory 在弹窗中选中Rename package 填写新的包名,点击Refactor 如果有警告,不用管它,直接点击Do Re ...

  2. 【Minimum Path Sum】cpp

    题目: Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right w ...

  3. 精通CSS高级Web标准解决方案(6、对表单与表格应用样式)

    使用fieldset input[type="text"] { width:200px; } input:focus,textarea:focus{background:#ffc; ...

  4. Leetcode 576.出界的路劲数

    出界的路径数 给定一个 m × n 的网格和一个球.球的起始坐标为 (i,j) ,你可以将球移到相邻的单元格内,或者往上.下.左.右四个方向上移动使球穿过网格边界.但是,你最多可以移动 N 次.找出可 ...

  5. 聊聊、Java 命令 第一篇

    网上很多讲 Javac 和 Java 命令的,我觉得还是要自己写一写,做一个自己的总结,也方便以后查询. 开始之前先看看 help 命令,基本上任何一个软件都会提供这个命令. 没有什么比 -help ...

  6. 关于C++ STL标准库中map 的多元素应用

    map的特性是,所有的元素会根据键值自动排序.map的所有元素都是pair,同时拥有实值(value)和键值(key).pair的第一个元素被视为键值,第二个被视为实质piar 的定义 templat ...

  7. linux常用命令(复制)

    显示目录和文件的命令    Ls:用于查看所有文件夹的命令. Dir:用于显示指定文件夹和目录的命令   Tree: 以树状图列出目录内容 Du:显示目录或文件大小 修改目录,文件权限和属主及数组命令 ...

  8. CSS查缺补漏篇

    前面的话:关于CSS,之前我已经做过一些基础的知识点介绍.CSS主要是用来给页面设置样式的,一般说来,在一个网站中,CSS应该独立封装在一个单独的.css外部文件中.样式的设置总体来说是不难的,但是需 ...

  9. win 8系统下如何安装搭建python

    python的环境搭建除了python本身,还有Aptana和pip的安装.Aptana提供了更好的集成开发环境,pip主要用于安装第三方的包. 具体安装流程可参考以下两篇文章: InSky关于安装p ...

  10. openssl Rsa 分段加密解密

    密钥长度 1024 openssl genrsa -out rsa_private_key.pem openssl rsa -in rsa_private_key.pem -pubout -out r ...