大家大概都对如下信息图并不陌生,该图用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. git使用问题整理

    git访问远端仓库报"fatal: Authentication failed for"错误的,可能原因是账户密码变更,git配置了使用creditial helper,所以需要取 ...

  2. Hive官方文档

    Hive官方文档     内容列表 Cloudera制作的Hive介绍视频 安装与配置 系统需求 安装Hive发行版 从Hive源码编译 运行Hive 配置管理概览 运行时配置 Hive, Map-R ...

  3. 极简Node教程-七天从小白变大神(二:中间件是核心)

    当我们只引入express时,前述的那些功能都是没有启用的.那么,如何将这些功能添加进来呢?express通过其中间件机制实现了这些功能的管理.每一个中间件对应一个功能,而中间件可以是第三方库,也可以 ...

  4. 使用bat命令实现拖动快速安装APK包

    平时安装APK包,每次都要打命令adb install *********** 很繁琐,网上找到一个用BAT命令快速安装的方法   在桌面创建一个bat文件,输入: @echo off title i ...

  5. Leetcode 564.寻找最近的回文数

    寻找最近的回文数 给定一个整数 n ,你需要找到与它最近的回文数(不包括自身). "最近的"定义为两个整数差的绝对值最小. 示例 1: 输入: "123" 输出 ...

  6. HDU5857 Median 模拟

    Median HDU - 5857 There is a sorted sequence A of length n. Give you m queries, each one contains fo ...

  7. (转载) Linux五种IO模型

    转载:http://blog.csdn.net/jay900323/article/details/18141217     Linux五种IO模型及分析   目录(?)[-] 概念理解 Linux下 ...

  8. hadoop配置文件: hdfs-site.xml, mapred-site.xml

    dfs.name.dir Determines where on the local filesystem the DFS name node should store the name table( ...

  9. [NOI2008][bzoj1061] 志愿者招募 [费用流+巧妙的建图]

    题面 传送门 思路 引入:网络流? 看到这道题,第一想法是用一个dp来完成决策 但是,显然这道题的数据并不允许我们进行dp,尤其是有10000种志愿者的情况下 那么我们就要想别的办法来解决: 贪心?这 ...

  10. kubernetes 之dns 服务发现

    1.在每个节点上面导入如下镜像 [root@node1 DNS]# lltotal 59816-rw-r--r--. 1 root root 8603136 Nov 25 18:13 execheal ...