作者 | 张丹

来源 | R友舍

前言

R语言不仅在统计分析,数据挖掘领域,计算能力强大。在数据可视化上,也不逊于昂贵的商业。当然,背后离不开各种开源软件包的支持,Cairo就是这样一个用于矢量图形处理的类库。

Cairo可以创建高质量的矢量图形(PDF, PostScript, SVG) 和 位图(PNG, JPEG, TIFF),同时支持在后台程序中高质量渲染!

本文将介绍,Cairo在R语言中的使用。

目录

  1. Cairo介绍

  2. Cairo安装

  3. Cairo使用

1. Cairo介绍

在信息领域中,cairo 是一个让用于提供矢量图形绘图的免费库,cairo 提供在多个背景下做 2D 的绘图,高级的更可以使用硬件加速功能。

虽然 cairo 是使用C语言撰写的,但是当使用 cairo 时,可以用许多其他种语言来使用,包括有 C++、C#、Java、Python、Perl、Ruby、Scheme、Smalltalk 以及许多种语言,cairo 在 GNU LGPL 与 Mozilla Public License (MPL) 两个认证下发布。

上文介绍,摘自:http://zh.wikipedia.org/wiki/Cairo_(绘图)

R语言Cairo接口的官方发布页:http://www.rforge.net/Cairo/

2. Cairo安装

系统环境

  • Linux: Ubuntu 12.04.2 LTS 64bit

  • R: 3.0.1 x86_64-pc-linux-gnu

Cairo基本库安装

3. Cairo使用

Cairo使用起来非常简单,和基础包grDevices中的函数对应。

  • CairoPNG: 对应grDevices:png()

  • CairoJPEG: 对应grDevices:jpeg()

  • CairoTIFF: 对应grDevices:tiff()

  • CairoSVG: 对应grDevices:svg()

  • CairoPDF: 对应grDevices:pdf()

我常用的图形输出,就是png和svg。

检查Cairo的兼容性:

~ R> library(Cairo)> Cairo.capabilities()   png   jpeg   tiff    pdf    svg     ps    x11    win raster  TRUE   TRUE  FALSE   TRUE   TRUE   TRUE   TRUE  FALSE   TRUE

下面比较一下 CairoPNG() 和 png() 输出效果。

1). 散点图

x<-rnorm(6000)y<-rnorm(6000)# PNG图png(file="plot4.png",width=640,height=480)plot(x,y,col="#ff000018",pch=19,cex=2,main = "plot")dev.off()CairoPNG(file="Cairo4.png",width=640,height=480)plot(x,y,col="#ff000018",pch=19,cex=2,main = "Cairo")dev.off()# SVG图svg(file="plot-svg4.svg",width=6,height=6)plot(x,y,col="#ff000018",pch=19,cex=2,main = "plot-svg")dev.off()CairoSVG(file="Cairo-svg4.svg",width=6,height=6)plot(x,y,col="#ff000018",pch=19,cex=2,main = "Cairo-svg")dev.off()

以下为PNG图:

2). 三维截面图

x <- seq(-10, 10, length= 30)y <- xf <- function(x,y) { r <- sqrt(x^2+y^2); 10 * sin(r)/r }z <- outer(x, y, f)z[is.na(z)] <- 1# PNG图png(file="plot2.png",width=640,height=480)op <- par(bg = "white", mar=c(0,2,3,0)+.1)persp(x, y, z,theta = 30, phi = 30,expand = 0.5,col = "lightblue",ltheta = 120,shade = 0.75,ticktype = "detailed",xlab = "X", ylab = "Y", zlab = "Sinc(r)",main = "Plot")par(op)dev.off()CairoPNG(file="Cairo2.png",width=640,height=480)op <- par(bg = "white", mar=c(0,2,3,0)+.1)persp(x, y, z,theta = 30, phi = 30,expand = 0.5,col = "lightblue",ltheta = 120,shade = 0.75,ticktype = "detailed",xlab = "X", ylab = "Y", zlab = "Sinc(r)",main = "Cairo")par(op)dev.off()

以下为PNG图:

3). 文字显示

library(MASS)data(HairEyeColor)x <- HairEyeColor[,,1]+HairEyeColor[,,2]n <- 100m <- matrix(sample(c(T,F),n^2,replace=T), nr=n, nc=n)# PNG图png(file="plot5.png",width=640,height=480)biplot(corresp(m, nf=2), main="Plot")dev.off()CairoPNG(file="Cairo5.png",width=640,height=480)biplot(corresp(m, nf=2), main="Cairo")dev.off()# SVG图svg(file="plot-svg5.svg",width=6,height=6)biplot(corresp(m, nf=2), main="Plot-svg")dev.off()CairoSVG(file="Cairo-svg5.svg",width=6,height=6)biplot(corresp(m, nf=2), main="Cairo-svg")dev.off()

以下为PNG图:

我们查看两个文件的属性:以png直接生成的图54KB,以CairoPNG生成的图43.8KB。

综上的3个例子,我分辨不出太大区别,只是Cairo感觉更淡、更柔和一些。

大家不妨找一些更复杂的图形来尝试着比较。

转载请注明出处:
http://blog.fens.me/r-cairo/

——————————————

往期精彩:

  • 我造的假我自己打,Adobe推出“反PS”

  • 微软删除人脸识别,除了隐私,更重要的可能是性别歧视与种族主义

  • 亚马逊在中国失败,而中国却在亚马逊成功

R语言的高质量图形渲染库Cairo相关推荐

  1. R语言入门——高质量保存图片(想毕业咋就那么难!!!)

    高质量保存图片 引言 问题描述 失败案例 文章结构 四种不同的角度介绍 1.PS转存 实现方法介绍 PS在学术论文中的使用 2.R语言输出方法 内置输出函数 R语言函数包输出(ggplot2) R语言 ...

  2. r语言 tunerf函数_R语言 | 一网打尽高质量统计分析与机器学习包

    原标题:R语言 | 一网打尽高质量统计分析与机器学习包 146+72本期刊<SCI期刊分析+选刊网站>免费领 解螺旋公众号·陪伴你科研的第2232天 常用统计方法包+机器学习包(名称.简介 ...

  3. Android源码-高质量开发库

    借鉴:秀源码http://www.xiufm.com/forum.php?mod=viewthread&tid=14873&highlight=Android%E6%BA%90%E7% ...

  4. 化合物筛选“杀手锏”:高质量化合物库+一站式虚拟筛选,这里都备齐了

    化合物筛选是指从大量化合物库中筛选出特定靶点或细胞的特异活性化合物的过程.随着生物医药相关学科的发展,高通量筛选(high throughput screening, HTS)在基础研究及药物开发领域 ...

  5. 数据分析-R语言资料整理

    独家分享--48页PPT解密数据可视化! Excel图表快捷操作小技巧 基于随机森林的分类与回归 R语言制作网页 ggplot2:可视化设计师的神器,了解一下 [译]R包介绍:Online Rando ...

  6. R语言中文社区2018年终文章整理(作者篇)

    欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! 对商业智能BI.大数据分析挖掘.机器学习,python,R等数据领域感兴趣的同学 ...

  7. 精心整理 | R语言中文社区历史文章整理(类型篇)

    2018年过去一半了~又到了盘点的时间~感谢长时间来各位好友的关注,我们的成长与你们的爱护是分不开的.更感谢各位老师的投稿,支撑起了我们的这个社区,让更多R语言的爱好者和从业者获得最棒的知识!本文选取 ...

  8. R语言RCurl爬虫(多线程爬虫)-高评分豆瓣图书

    R语言爬虫-高评分图书(豆瓣) # R语言爬虫-高评分图书(豆瓣) 本篇文章依然延续之前的爬虫类型文章,多次实操有助于对于代码的理解和技术的提升.此次爬取的是豆瓣上高评分的图书,每一次爬取都会给大家提 ...

  9. R语言命令行写linux,linux命令行下使用R语言绘图实例讲解

    使用系统:centos 6.4 64bit 在R语言中可以使用png()等函数生成图片,例如: png("aa.png")可以生成图片. 但是如果你是通过shell远程连接到系统上 ...

  10. R语言:优雅、卓越的统计分析及绘图环境

    文 / 刘思喆 历史 R语言由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman两人共同发明,其词法和语法分别源自Scheme和S语言,一般认为R语言是S语言[注:John Ch ...

最新文章

  1. 理性解读中国科技实力:不震惊式吹捧,也不全盘抹杀
  2. 2020年Spring Cloud最后一个大版本发布!
  3. Android重写菜单增加系统自带返回键
  4. 如何使自己的网站与UC进行用户整合
  5. ***CSS3 Gradient渐变色(转:http://www.w3cplus.com/content/css3-gradient)
  6. x(x-1)表达式的意义
  7. SpringBoot读取外部配置文件的方法
  8. acm常见错误-持续更新
  9. 【渝粤教育】国家开放大学2019年春季 2321物流学概论 参考试题
  10. 华为云怎么样_为什么阿里云要迁移到华为云?详细过程分析
  11. 几篇关于UDEV的文章
  12. Oracle merge into用法以及相关例子示例
  13. C语言图书信息管理系统
  14. Android 开发问题
  15. oppor829t如何刷机_科普OPPO R1 R829T的线刷教程及最简单的三星手机刷机教程
  16. 【动画演示软件】Focusky教程 | 加入 配音/录音/字幕
  17. H5播放flv视频流
  18. 为什么科技互联网公司越来越重视数学?
  19. lua生成随机数,设置随机数种子
  20. Algorithms学习笔记-第一章 基础

热门文章

  1. 使用redis作为缓存,数据还需要存入数据库中吗?
  2. iOS Xcode7.2 is Not on Any Development Teams
  3. 浙大学霸Facebook总部跳楼:永远不要把公司当成“家”
  4. 看完这篇还不了解Nginx,你来找我!
  5. 写代码千万别用User这个单词!
  6. 别人工作2年半跳槽面试阿里,成功拿到offer,为什么你不可以?
  7. 现代Web开发需要学习的15大技术
  8. UC大裁员:全体带薪休假至3月31日,补偿措施羡煞网友!
  9. 说说携程准备推出的「3+2」工作模式。
  10. 对象可以创建数组吗_女生没房可以吗?男生有多在意结婚对象的家境?答案很现实...