R语言实战——1.3图形初阶
图形初阶
本篇推送将介绍如何用R绘图,话不多说,直接开搞!
01
图形参数
符号和线条
颜色
在R中,可以通过颜色下标、颜色名称、十六进制的颜色值、RGB值或HSV值来指定颜色。举例来说,col=1、col="white"、col="#FFFFFF"、col=rgb(1,1,1)和col=hsv(0,0,1)都是表示白色的等价方式。函数rgb()可基于红-绿-蓝三色值生成颜色,而hsv()则基于色相-饱和度-亮度值来生成颜色。
R中也有多种用于创建连续型颜色向量的函数,包括rainbow()、heat.colors()、terrain.colors()、topo.colors()以及cm.colors()。举例来说,rainbow(10)可以生成10种连续的“彩虹型”颜色。
对于创建吸引人的颜色配对,RColorBrewer特别受到欢迎。注意在第一次使用它之前先进行下载(install.packages("RColorBrewer"))。安装之后,使用函数brewer.pal(n, name)来创建一个颜色值的向量。比如说,以下代码:
library(RColorBrewer)
n<-7
mycolors<-brewer.pal(n,"Set1")
barplot(rep(1,n), col=mycolors)
从Set1调色板中抽取了7种用十六进制表示的颜色并返回一个向量。若要得到所有可选调色板的列表,输入brewer.pal.info;或者输入display.brewer.all()从而在一个显示输出中产生每个调色板的图形。
文本属性
通过par()设定的参数对两幅图都有效。
02
添加文本、自定义坐标轴和图例
标题
使用title()函数为图形添加标题和坐标轴标签,调用格式为:
title(main="main title", sub="subtitle", xlab="x-axis label", ylab="y-axis label")
坐标轴
使用函数axis()来创建自定义的坐标轴,而非使用R中的默认坐标轴,其格式为:
axis(side, at=, labels=, pos=, lty=, col=, las=, tck=, ...)
创建自定义坐标轴时,你应当禁用高级绘图函数自动生成的坐标轴。参数axes=FALSE将禁用全部坐标轴(包括坐标轴框架线,除非你添加了参数frame.plot=TRUE)。参数xaxt="n"和yaxt="n"将分别禁用 X 轴或 Y 轴(会留下框架线,只是去除了刻度)。
参考线
函数abline()可以用来为图形添加参考线,其使用格式为:
abline(h=yvalues, v=xvalues)
函数abline()中也可以指定其他图形参数(如线条类型、颜色和宽度)。
图例
当图形中包含的数据不止一组时,图例可以帮助你辨别出每个条形、扇形区域或折线各代表哪一类数据,可以使用函数legend()来添加图例:
legend(location, title, legend, ...)
文本标注
通过函数text()和mtext()将文本添加到图形上。text()可向绘图区域内部添加文本,而mtext()则向图形的四个边界之一添加文本,使用格式分别为:
text(location, "text to place", pos, ...)
mtext("text to place", side, line=n, ...)
数学标注
使用类似于TeX中的写法为图形添加数学符号和公式。请参阅help(plotmath)以获得更多细节和示例。要即时看效果,可以尝试执行demo(plotmath)。函数plotmath()可以为图形主体或边界上的标题、坐标轴名称或文本标注添加数学符号。
03
图形的组合
par()函数
在par()函数中使用图形参数mfrow=c(nrows, ncols)来创建按行填充的、行数为nrows、列数为ncols的图形矩阵。另外,可以使用mfcol=c(nrows, ncols)按列填充矩阵。
示例:
layout()函数
函数layout()的调用形式为layout(mat),其中的mat是一个矩阵,它指定了所要组合的多个图形的所在位置。为了更精确地控制每幅图形的大小,可以有选择地在layout()函数中使用widths=和heights=两个参数。其形式为:
widths = 各列宽度值组成的一个向量
heights = 各行高度值组成的一个向量
相对宽度可以直接通过数值指定,绝对宽度(以厘米为单位)可以通过函数lcm()来指定。
layout(matrix(c(1, 1, 2, 3), 2, 2, byrow = TRUE), widths=c(3, 1), heights=c(1, 2))
若此时只有三幅图,将一幅图形置于第1行,两幅图形置于第2行。但第1行中图形的高度是第2行中图形高度的二分之一,右下角图形的宽度是左下角图形宽度的三分之一。
在前一章中,我们讨论了一系列输入或导入数据到R中的方法。遗憾的是,现实数据极少以直接可用的格式出现。下一章,我们将关注如何将数据转换或修改为更有助于分析的形式。
在看不好意思,那就点个赞吧