[3]R语言在数据处理上的禀赋——par参数详解(一)
本文目录
本文首发:program-dog.blogspot.com
注1:本文也曾在csdn发布,不过无法忍受csdn超长时间的审核,迁移到博客圆了。
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
这一篇介绍par参数比较基础的几个参数用法,涉及颜色,字体,线条和符号,坐标轴,添加图例,组合做图留到下一篇文章。
上一篇文章已经详细的介绍了R语言可视化技术的基本做图方法,参数的权限机制,并且已经举了不少做图的例子。但是貌似还有一些细节的地方没有提及,比如如何控制做图的颜色,大小以及比例,线条及点的形状,坐标轴,添加图例,组合做图等。这些看起来琐碎并且麻烦的东西,在R语言中得到优雅的处理,你不必为了一个线条或者图形的位置而编写什么诸如for循环之类的东西,实际上你只需要修改一下参数即可。到底是什么参数这么厉害呢?
如果你没有看上一篇文章,可以点击这里,或者你对R的可视化已经相当熟悉,可以直接往下看。
公共参数列表 par
还是先回忆一下R的权限机制。在R语言做图中,可以简单的通过配置参数达到想要的效果,但是参数有很多,有必要进行分类,避免滥用或浪费。比如有一些参数如颜色大小是可以通用的,被分到了par里面,作为公共参数集合;还有一些如坐标轴就只能有类似plot这样的函数保有,给别人人家也用不到那些啊。如果plot的坐标轴要用颜色相关的属性,那么就可以直接去par中取来用就是了。如果title想用字体这个属性,也可以去par中取。所以par理所当然的可以被称为公共参数列表了。
下面介绍一下par的参数以及用法。
颜色相关
先来看看和颜色相关的参数:
bg # 背景色
fg # 前景色
col # 颜色
bg和fg和含义一般编程语言中颜色的含义相同,下面举例说明一下:
先看代码:
opar<-par(no.readonly = TRUE)
x <- seq(1,10,length.out = 100) -5
y <- c(log(x[x>0]),log(abs(x[x<=0]))) #控制x大于0,看起来像乳房,怪数学
par(fg="red") #也可以写成类似 #ffffff形式
par(bg="black")
plot(x,y,type="l")
title(main="Black bg And Red fg",
col.main="yellow", #col的用法,下面介绍
sub="By program-dog.blogspot.com", #版权信息
col.sub="white"
)
par(opar)
在看效果:
再来看col,col是颜色的意思,可以用来特指某某是什么颜色。比如:
x <- seq(1,10,length.out = 100) -6
y <- x^2+10
z <- x^2+10
plot(x,y,type="l",col="red",ylim=c(5,15))
lines(x,z,type="l",col="green")
title(main="col的用法",
sub="By program-dog.blogspot.com" #版权信息
)
col有一些参数是预设的,如下:
col.axis #坐标轴
col.lab #标签
col.main #题目
col.sub #副题目
上面已经用过题目和副题目了,这里就不再举例子了。
字体相关
和字体相关的参数有下面几个:
family #全局字体,特指字体的类型,如宋体还是楷体
font #字体,特指字体的形态,如斜体还是粗体
先来看一看这个family,顾名思义,它是一个“家族”,掌管着做图的全局字体。举例说明一下:
代码:
opar<-par(no.readonly = TRUE)
par(mfrow=c(2,1)) #设置布局
x<- -10:10
y<- -(x^2)
# mono字体
par(family="mono")
plot(x,y,type='l')
title(main="family mono style",
sub="By program-dog.blogspot.com" #版权信息
)
# 默认字体
par(family="")
plot(x,y,type='l')
title(main="family default style",
sub="By program-dog.blogspot.com" #版权信息
)
par(opar)
效果图:
仔细观察,不仅仅题目的字体不一样,包括线条,标签的字体也不一样,这就是所谓的“family”效果。
关于family字体的选择,可以参见R文档,这里不再赘述.
再来看看font,font就是字体的意思,这里特指字体的形态(如斜体和粗体),但是这个font和col一样,可以用在特定的位置指明字体,也有几个预设的参数:
font.axis #坐标轴
font.lab #标签
font.main #题目
font.sub #副题目
用法和col大同小异:
opar<-par(no.readonly = TRUE)
x<- seq(-10,10,length.out = 100)
y<- sin(x)
par(font.axis=1) # 1 普通文本
par(font.lab=2) # 2 粗体
par(font.main=3) # 3 斜体
par(font.sub=4) # 4 粗斜体
plot(x,y,type='l')
title(main="font style",
sub="By program-dog.blogspot.com" #版权信息
)
par(opar)
效果图:
font是用数字来指明的,再次提醒一下,这里的font代表的可不是特殊的字体哦。
最后你可能要问了,那字体的大小呢?关于大小(size)接下来就要介绍。
字体大小相关
下面几个参数和大小是相关的:
cex
ps #专门指字体
先解决上一节字体大小的问题,可以试试ps:
opar<-par(no.readonly = TRUE)
x<- seq(-10,10,length.out = 100)
y<- log(x^2)
par(mfrow=c(3,1)) #设置布局
par(ps=10) # 10
plot(x,y,type='l')
title(main="font size:ps=10",
sub="By program-dog.blogspot.com" #版权信息
)
par(ps=15) # 15
plot(x,y,type='l')
title(main="font size:ps=15",
sub="By program-dog.blogspot.com" #版权信息
)
par(ps=20) # 20
plot(x,y,type='l')
title(main="font size:ps=20",
sub="By program-dog.blogspot.com" #版权信息
)
par(opar)
效果图:
显而易见,ps是控制着所有的字的大小。但是单单指明题目的大小怎么办呢?可以试试cex。
cex的用法也同于上面提到的col和font,几个预设的参数:
cex.axis #坐标轴
cex.lab #标签
cex.main #题目
cex.sun #副题目
举例来说:
opar<-par(no.readonly = TRUE)
x<- seq(-10,10,length.out = 100)
y<- sin(log(x^2))
par(mfrow=c(2,1)) #设置布局
par(cex.main=1)
plot(x,y,type='l')
title(main="font size:cex.main=1",
sub="By program-dog.blogspot.com" #版权信息
)
par(cex.main=1.5)
plot(x,y,type='l')
title(main="font size:cex.main=1.5",
sub="By program-dog.blogspot.com" #版权信息
)
par(opar)
效果图:
仔细观察发现,cex.main=1.5大字体大小都和ps=20的差不多大了,为什么呢?这是因为,ps中的字体大小=“ps*cex”。具体请见这里 。
干巴巴的线条和符号一点都不吸引人的注意力,下面介绍一下和线条和符号相关的几个参数。
线条相关
这个参数可以定制不同的线条:
lty #line style
代码:
opar<-par(no.readonly = TRUE)
x<- seq(-10,10,length.out = 100)
y<- sin(log(x^2))
par(lty=1) #lty 1
plot(x,-y,type='l',col="red",ylim=c(-3,3))
par(lty=2) #lty 2
lines(x,y,type='l',col="blue")
title(main="lty",
sub="By program-dog.blogspot.com" #版权信息
)
par(opar)
效果图:
lty也是用数字来表示不一样的线条风格,下面是在《R In Action》上弄下来的一张图:
R In Action
符号相关
下面来看看做图时候用到的特殊的符号 pch,先来看代码:
opar<-par(no.readonly = TRUE)
x<- seq(-10,10,length.out = 20)
y1<- 0.1*x^2
y2<- 0.2*x^2
y3<- 0.4*x^2
y4<- 0.8*x^2
y5<- 1.6*x^2
y6<- 3.2*x^2
par(pch=1) #pch 1
plot(x,y1,type='b',col="red",xlim=c(0,5))
par(pch=2) #pch 2
lines(x,y2,type='b',col="blue")
par(pch=3) #pch 3
lines(x,y3,type='b',col="green")
par(pch=4) #pch 4
lines(x,y4,type='b',col="red")
par(pch=5) #pch 5
lines(x,y5,type='b',col="blue")
par(pch=6) #pch 6
lines(x,y6,type='b',col="green")
title(main="pch",
sub="By program-dog.blogspot.com" #版权信息
)
par(opar)
效果图
pch的线条种类如下,图同样摘自《R In Action》:
线条和符号大小相关
线条的大小可以用lwd调节,符号的大小可以用cex调节,看代码:
opar<-par(no.readonly = TRUE)
x <- seq(1,10,length.out = 20)
y <- 1/x
par(mfrow=c(2,1))
plot(x,y,type="b",pch=2,cex=2,lty=3,lwd=2)
title(main="lwd =2 and cex = 2",
sub="By program-dog.blogspot.com" ,#版权信息
cex.sub=0.5
)
plot(x,y,type="b",pch=2,cex=1,lty=3,lwd=1)
title(main="lwd = 1 and cex =1",
sub="By program-dog.blogspot.com" ,#版权信息
cex.sub=0.5
)
par(opar)
效果图:
cex上面其实已经介绍过了,不过上面cex用在了par里面,相当于全局变量,会把所有的线条和符号(包括坐标轴,标题等)改变,而这里只是在plot的特定位置做了修饰,改变了局部。
结束
由于篇幅,par的坐标轴,添加图例,组合做图等下一篇再介绍。看到这里,不难发现,R做图的优势在于可配置的参数众多,灵活性极强,同时使人更加专注于做图而非编程,这只是R在数据处理方面众多优势之一。
[3]R语言在数据处理上的禀赋——par参数详解(一)的更多相关文章
- [2]R语言在数据处理上的禀赋之——可视化技术
本文目录 Java的可视化技术 R的可视化技术 二维做图利器plot的参数配置 *权限机制 *plot独有的参数 *plot的type介绍 *title介绍 *公共参数集合--par *par的权限机 ...
- R语言之数据处理
R语言之数据处理 一.向量处理 1.选择和显示向量 data[1] data[3] data[1:3] data[-1]:除第一项以外的所有项 data[c(1,3,4,6)] data[data&g ...
- 【转】JQuery上传插件Uploadify使用详解及错误处理
转自:http://www.jb51.net/article/43498.htm 关于JQuery上传插件Uploadify使用详解网上一大把,基本上内容都一样.我根据网上的步骤配置完成后,会报一些错 ...
- 转 虫师的selenium借助AutoIt识别上传(下载)详解
selenium借助AutoIt识别上传(下载)详解 2014-12-27 11:26 by 虫师, 755 阅读, 1 评论, 收藏, 编辑 AutoIt目前最新是v3版本,这是一个使用类似BAS ...
- 【转载】Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解
Linux字符集和系统语言设置-LANG,locale,LC_ALL,POSIX等命令及参数详解 1清风揽月10人评论5006人阅读2017-06-21 15:48:43 博文说明[前言]: 本文 ...
- Go语言Slice作为函数参数详解
Go语言Slice作为函数参数详解 前言 首先要明确Go语言中实质只有值传递,引用传递和指针传递是相对于参数类型来说. 个人认为上诉的结论不对,把引用类型看做对指针的封装,一般封装为结构体,结构体是值 ...
- (转)Centos7上部署openstack ocata配置详解
原文:http://www.cnblogs.com/yaohong/p/7601470.html 随笔-124 文章-2 评论-82 Centos7上部署openstack ocata配置详解 ...
- C语言 printf格式化输出,参数详解
有关输出对齐 int main(int argc, char* argv[]){ char insertTime[20] = {"1234567890"}; double in ...
- indows下PHP通过ffmpeg给上传的视频截图详解
windows下PHP通过ffmpeg给上传的视频截图详解,php_ffmpeg.dll安装下载,找了很久php_ffmpeg.dll的下载地址和应用,发现有用的资源很少,现在问题解决了,贴出来跟大家 ...
随机推荐
- [LintCode] Intersection of Two Arrays 两个数组相交
Given two arrays, write a function to compute their intersection.Notice Each element in the result m ...
- JDBC连接池。。。转载
1. 引言 近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机 应用程序已从传统的桌面应用转到Web应用.基于B/S(Browser/Server)架 ...
- inline,block,inline-block的区别
display:block block元素会独占一行,多个block元素会各自新起一行.默认情况下,block元素宽度自动填满其父元素宽度. block元素可以设置width,height属性.块级元 ...
- TestStand与LabVIEW UI 交互
交互起因 客户觉得TestStand界面复杂,希望一个简单的界面即可进行序列执行,采用LabVIEW调用TestStand引擎可实现快速设计,将TestStand拆解到LabVIEW.然而,这样做需要 ...
- IIS 8 下使用 WCF
按照以下步骤添加后,IIS8即支持WCF服务. 首先添加MIME类型 扩展名“.svc”,MIME类型 “application/octet-stream” 2. 然后在“Handler Mappin ...
- php读取指定结束指针文件内容
fopen操作时文件读取开始指针位于文件开始部分, fseek 以指定文件大小以及开始指针位置确定结束指针位置 具体案例: <?php//打开文件流,fopen不会把文件整个加载到内存$f = ...
- Servlet获取URL地址
这里来说说用Servlet获取URL地址.在HttpServletRequest类里,有以下六个取URL的函数: getContextPath 取得项目名 getServletPath 取得Servl ...
- prim算法
最小生成树 一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边.最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法 ...
- js循环的总结
js原生的循环有两种,一般的for循环和for...in循环.还有一种常用jQuery.each()循环. 一. js原生循环 a. for循环,代码如下: var myArray = [1,2,3] ...
- Solved Unable to copy the source file ./installer/services.sh to the destination file /etc/vmware-t
Sometimes when you intall vmwaretools there will be some problems such as "Unable to copy the s ...