初探ggplot2 geom__制作面积图

大家大概都对如下信息图并不陌生,该图用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 # 为绘图而创建所需的dataframe
    10 grp.dat<-matrix(grp.dat,nrow=length(t.step),ncol=length(grps))
    11 grp.dat<-data.frame(grp.dat,row.names=t.step)

数据结果如图所示:

接下来,我们用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有更多好玩的应用,具体可以戳:http://docs.ggplot2.org/current/geom_area.html

From WizNote

时间: 2024-08-02 19:09:19

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

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

前言 折线图通常用来对两个连续变量的依存关系进行可视化,其中横轴很多时候是时间轴. 但横轴也不一定是连续型变量,可以是有序的离散型变量. 绘制基本折线图 本例选用如下测试数据集: 绘制方法是首先调用ggplot函数选定数据集,并在aes参数中指明横轴纵轴.然后调用条形图函数geom_line()便可绘制出基本折线图.R语言示例代码如下: # 基函数 ggplot(BOD, aes(x = Time, y = demand)) + # 折线图函数 geom_line()     运行结果: 向折线

在Excel中制作雷达图

雷达图的作用 雷达图是专门用来进行多指标体系比较分析的专业图表.从雷达图中可以看出指标的实际值与参照值的偏离程度,从而为分析者提供有益的信息.雷达图一般用于成绩展示.效果对比量化.多维数据对比等等,只要有前后2组3项以上数据均可制作雷达图,其展示效果非常直观,而且图像清晰耐看,而且通过EXCEL 2007(含)以上版本制作的雷达图非常漂亮,而且还可个性美化. 文中的雷达图只是方便以后记忆,故不详,具体细节没有截图保存,详细了解的,请自行百度

XCL-Charts画面积图(AreaChart) 例1

面积图的一个例子,做面积图时发现注释位置放图上方更好处理.改了下. 面积图的网格和轴处理与其它图不一样, 它是用覆盖的范围来表示其势力范围,标签轴无需在突出一段出来.这里处理了下. 代码: //图基类 chart = new AreaChart(); //图所占范围大小 chart.setChartRange(0, 0, this.mScrWidth , this.mScrHeight ); //标签1对应的数据集 LinkedList<Double> valueA= new LinkedLi

JFreeChart在制作折线图

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

excel具有制作甘特图的功能

1.Excel最大功能:数据处理.统计分析. 2.数据有效性验证: 长数字输入方法,文本前面加英文"'"(单引号)或使用文本转换. 身份证号:数据.数据有效性.文本长度. 性别:数据.数据有效性.序列.多数据内容用英文","(逗号)隔开. 3.甘特图表(制作工期图):插入.条形图.二维条形图.堆积图条形图.设置数据系列格 式.填充或背景设置为无. 如图: 4.组合图表:插入.柱形图.二维柱形图.更改图表类型.设置数据系列格式.次坐标图. 如图: 5.公式:公式必须以

制作菱形图

制作菱形图 今天看到w3plus上面的一篇文章http://www.w3cplus.com/preprocessor/diamond-grid-using-sass.html 个人觉得他的实现方法很麻烦,于是用了栅格化写法写了一个比较简单的demo 思路如下: 1.首先:我将这个倾斜的图逆时针旋转正了过来,当然你也可以顺时针旋转,正过来后比较符合我们平时看到的网页形态. 2.分析:分析这个图,从上往下分析,大概可以分成三行 所以我们的html结构可以是酱紫的,用一个wrap把这三行包围起来,那么

使用ggbio在R中制作弦图

分享一个制作弦图的R包:ggbio. 效果图和代码如下.稍后解释具体用法... library(GenomicRanges) set.seed(1) N <- 100 gr <- GRanges(seqnames = sample(c("chr1", "chr2", "chr3"), size = N, replace = TRUE), IRanges(start = sample(1:300, size = N, replace =

最新版FusionCharts2D面积图

1.实现源码 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+reque

python批量制作雷达图

老板要画雷达图,但是数据好多组怎么办?不能一个一个点excel去画吧,那么可以利用python进行批量制作,得到样式如下: 首先制作一个演示的excel,评分为excel随机数生成: 1 =INT((RAND()+4)*10)/10 加入标签等得到的excel样式如下(部分,共计32行): 那么接下来就是打开python写码了,本文是基于python3.4进行编写 1 wb = load_workbook(filename=r'C:\Users\Administrator\Desktop\数据指