数据可视化是借助于图形化手段来展示数据, 实现清晰有效地传达与沟通信息。数据为什么要可视化? 一方面是因为数字太抽象, 图表更直观, 而且图表可以提炼出其他方法不那么容易发现的模式;另一方面, 数据面向的受众大都不具备专业的数据科学知识,可视化的形式有助于降低读䔆数据的门槛。而R语言具有强大的绘图系统, 有大量的R包可实现绘图功能, 在可视化领域表现出众。
(1) 图形的创建和保存
R语言作为一种强大的图形构建平台, 可以通过代码或图形用户界面来保存图形.
通过代码保存图形到文件时, 将绘图语句放在开启和关闭目标图形设备的语句之间即可。先使用pdf(),png(),jep(),bmp(),tiff(),xfig(),postscript()
等函数启动图形设备,驱动并创建文件,最后使用, 最后使用 dev.off()
函数关闭图形设备并输出返回到终端。也可以使 用dev,new()、dev.next()、dev,prev()、dev.set()
函数同时打开多个图形窗口,并选择指定 图形输出发送到指定窗口。需要注意的是, 在一些可视化 $R$ 包中需要用 print()
输出绘图语句才能将图形输出到文件中。
通过图形用户界面保存图形的方法因系统而异。对于 Windows 平台, 在图形窗口中选 择“文件” →“另存为”, 然后在弹出界面选择格式和保存位置即可; 若使用 RStudio, 则可直接在界面右下角区域选择导出保存。在 UNIX/Linux 系统中, 图形必须使用代码保存。
(2)图形参数的设置
可以通过修改图形参数的选项自定义一幅图形的多个特征, 包括字体、颜色、坐标轴或标题等。下表列出了图形的参数。
使用函数 par
修改图形参数, 这种方式设定的参数值针对所有图形, 在整个会话结束前都一直有效。不加参数执行该函数将生成一个含有当前图形参数设置的列表,添加参数 no. readonly =TRUE
可生成一个可以修改的当前图形参数列表。可以使用图形参数来指定绘图时使用的符号、线条、颜色、文本属性及图形尺寸等。
除了图形参数外, 大部分高级绘图函数, 例如plot(),hist(),boxplot()
等, 都可以自行 设定坐标轴和文本标注等选项。
另外,还有一些函数可直接设置图形的标题、坐标轴、图例等。使用 title()
函数为图形添加标题和坐标轴标签; axis()
函数创建自定义坐标轴; abline()
函数可为图形添加参考线; 当图形中包含不止一组数据时, legend()
函数可添加图例以帮助辦别; text()
和 mtext()
函数可向绘图区域内部或图形四个边界之一直接添加文本等。
可以在 par()
函数中便用图形参数 mfrow=c(nrows, ncols)
创建按行填充的、行数为为nrows
、列数为ncols
得图形矩阵,或使用nfcol=c(nrows,ncols)
按列填充矩阵,参数fig
能更准确控制图形布局。函数layout()
得调用方式为layout(mat)
其中mat
是一个矩阵,可以使用参数 widths
和 heights
更精确地控制每幅图形的大小.
条形图通过芊直或水平的矩形展示类别型变量的频数。绘制条形图的函数是
barplot(height, xlab, ylab, main, names,arg, col, beside)
其中, height
是一个向量或者一个矩阵,包含绘制图表用的数字值,每个数值表示矩形条的 高度; xlab
表示 x
轴标签; ylab
表示 y
轴标签; main
表示图表标题; names.arg
指每个矩形 条的名标: col
表示每个矩形条的颜色; beside
值为逻辑值, 如果为 FALSE
, 则列被描绘为堆叠的条形图,如果为 TRUE
, 则列被描绘为并列的条形图。
饼图, 或称饼状图, 是一个划分为几个扇形的圆形统计图表, 用于描述量、频率或百分比之间的相对关系。可使用 pie()函数来实现饼图,语法格式如下:
pie(x, labels =names(x), edges =200, radius =0.8, clockwise = FALSE,
init.angle =if (clockwise) 90 else 0 , density =NULL, angle =45, col=NULL,
border = NULL, ly = NULL, main = NULL, ...)
其中, x
为一个数值向量, 表示各个扇形的面积; labels
值为字符型向量, 表示各扇形面积标签; edges
指的是多边形的边数; radius
表示饼图的半径; main
为饼图的标题; clockwise
的 值是一个逻辑值, 用来指示饼图各个切片是否按顺时针做出分割; angle
可以设置底纹的斜率; density
设置底纹的密度, 默认值为 NULL
; col
代表每个扇形的颜色。
使用 plotrix 库的 pie3D()
函数可以绘制 3D 的饼图, 使用前需先安装 plotrix
包。
直方图通过在 x
轴上将值域分割为一定数量的组, 在 y
轴上显示相应值的频数, 展现 了连续性变量的分布。建立直方图所用到的函数是 hist(x)
。基本格式如下:
hist (x, breaks = "Sturges", xlab=..., col =..., freq = NULL, probability =..., main=...)
其中, x
表示数值向量; breaks
为分段区间, 即各区间端点构成的向量、分段数、计算划分区 间的算法名称、划分区间个数的函数或方法; xlab
指 x
轴标签; col
设置直方图颜色; freq
默认认为 TRUE 表示绘制频数直方图, 若为 FALSE 则表示绘制频率直方图; probability
与 freq
对立, 设置是否以概率密度作图, 默认为 FALSE
; main
表示直方图标题名称.
箱线图又称为盒须图, 通过绘制连续型变量的五数总括, 即最小值、下四分位数 (Q1)。 中位数 (Q2)、上四分位数 (Q3),以及最大值、描述了连续型变量的分布。箱线图能够显示出可能异常值, 也称为离群値, 是指范围 $\pm 1.5$ 倍 IQR 以外的值, IQR 表示四分位距, 即上四分位数与下四分位数的差。 R语言中建立箱线图的函数是 boxplot()
。 单独的箱线图调用格式:
boxplot(x, range =1.5, width = NULL, varwidth = FALSE, notch = FALSE, horizontal=FAL.SE,... )
其中, x
表示一系列数值向量, 依次做出箱线图; range
可按倍数设置延长线长度, 默认为 1.5
倍; width
用于设置盒长; varwidth
用来确定盒宽与样本量的平方根是否成比例, 默认为 FALSE
; notch
用于判断是否绘制带刻槽的凹形盒, 默认为 FALSE
; horizontal
可设置箱线 图的方向,默认为 FALSE
, 表示垂直作图, TRUE
为水平作图。
分组变量的箱线图调用格式:
boxplot(formula, data = dataframe)
其中, formula
表示公式, 如 y $\sim$ A
, 将类别型变量 A 的每个值并列地生成数值型变量 y的 箱线图; data
则指定提供数据的数据框或列表。
散点图是将所有的数据以点的形式展现在直角坐标系上, 以显示变量之间的相互影响程度, 点的位置由变量的数值决定,每个点对应一个 $X$ 和 $Y$ 轴点坐标。点图提供了一种在简单水平刻度上绘制大量有标签值的方法。散点图可以使用 plot}()
函数来绘制, 语法格式 如下:
plot (x, y, type = "p", main, xlab, ylab, xlim, ylim, axes )
其中, x
表示横坐标 $x$ 轴的数据集合; y
表示给坐标 $y$ 轴的数据集合; type
指的是绘图的类型, 可选参数包括 p
为点、 1
为直线, o
同时绘制点和线, 且线穿过点, h
是绘制出点到横坐标轴的垂直线, s
表示先横后纵的阶梯图, S
表示先纵后横的阶梯图; main
表示图表标题; xlab、ylab
分别代表 $x$ 轴和 $y$ 轴的标签名称; xlim、ylim
分别是 $x$ 轴和 $y$ 轴的范围; axes
值 为布尔值, 确定是否绘制两个坐标轴。
䔩点图矩阵是借助两变量散点图的作图方法, 它可以看作是一个大的图形方阵, 其每 一个非主对角元素的位置上是对应行的变量与对应列的变量的散点图。而主对角元素位 置上是各变量名, 这样, 借助散点图矩阵可以清晰地看到所研究的多个变量两两之间的相 关关系。散点图矩阵就是把数据集中的每个数值变量两两绘制散点图。 $\mathrm{R}$ 语言使用以下 函数创建散点图矩阵:
pairs (formula, data)
其中, formula
代表变量系列; data
代表变量的数据集。
摘自:
x <- 1:20
y <- 2*x+rnorm(20,10,5)
plot(x,y)