跳转到内容

统计分析:R/R/图形入门

来自维基教科书,开放的书籍,开放的世界
正如本书贯穿始终所论证的,分析中一个极其重要的部分是对数据的可视化。幸运的是,R 拥有广泛的数据可视化功能:事实上,本书中的所有图形都是使用 R 制作的,通常只需几行代码[1]

在 R 中生成绘图主要有两种方法

  1. 传统的 R 图形。我们将在此主题中介绍这个基本的图形框架。我们将使用它来生成与图 1.1 和 1.2 中类似的绘图。
  2. “Trellis” 图形。这是一个更复杂的框架,可用于在一个页面上生成多个类似的绘图。在 R 中,此功能由 “lattice” 包提供(键入 help("Lattice", package=lattice) 获取详细信息)。

如何生成特定类型绘图的详细信息将在后面的章节中介绍;本主题仅介绍最基本的原理,其中主要有 3 个要点需要牢记

  • 在 R 中生成绘图是通过键入特定的图形命令来实现的。这些命令有两种类型
    1. 设置完全新绘图的命令。此类型最常见的函数被称为 plot()。在最简单的情况下,这可能会用新绘图替换任何先前的绘图。
    2. 向现有绘图添加图形(线、文本、点等)的命令。许多函数可以做到这一点:最有用的函数是 lines()abline()points()text()
  • R 始终将图形输出到一个 设备。通常这是一个屏幕上的窗口,但它也可以是一个 pdf 或其他图形文件(完整列表可以通过 ?device 找到)。这是将绘图保存到文档等中的方法之一。要在 (比如) pdf 文件中保存图形,您需要使用 pdf() 激活一个新的 pdf 设备,运行您的常规图形命令,然后使用 dev.off() 关闭设备。这在下面的最后一个示例中得到了说明。
  • 不同的函数会根据 plot() 的第一个参数触发。默认情况下,这些函数旨在生成合理的输出。例如,如果它给出一个函数,比如 sqrt 函数,plot() 将生成 xsqrt(x) 的图形;如果它给出一个数据集,它将尝试以合理的方式绘制数据点(有关更多详细信息,请参阅 ?plot.function?plot.data.frame)。诸如颜色、样式、项目大小以及轴标签、标题等图形细节,大多数可以通过 plot() 函数的其他参数来控制[2]
下面的示例从简单开始,然后变得越来越详细。建议初学者将每一行代码粘贴到 R 中,一次一行,以查看每个命令的效果。也建议进行实验!
输入
plot(sqrt)                              #Here we use plot() to plot a function 

plot(cars)                              #Here a dataset (axis names are taken from column names)

###Adding to an existing plot usually requires us to specify where to add
abline(a=-17.6, b=3.9, col="red")       #abline() adds a straight line (a:intercept, b:slope)
lines(lowess(cars), col="blue")         #lines() adds a sequence of joined-up lines
text(15, 34, "Smoothed (lowess) line", srt=30, col="blue")  #text() adds text at the given location
text(15, 45, "Straight line (slope 3.9, intercept -17.6)", srt=32, col="red") #(srt rotates)
title("1920s car stopping distances (from the 'cars' dataset)")

###plot() takes lots of additional arguments (e.g. we can change to log axes), some examples here
plot(cars, main="Cars data", xlab="Speed (mph)", ylab="Distance (ft)", pch=4, col="blue", log="xy")
grid()                                  #Add dotted lines to the plot to form a background grid 
lines(lowess(cars), col="red")          #Add a smoothed (lowess) line to the plot

###to plot to a pdf file, simply switch to a pdf device first, then issue the same commands
pdf("car_plot.pdf", width=8, height=8)  #Open a pdf device (creates a file)
plot(cars, main="Cars data", xlab="Speed (mph)", ylab="Distance (ft)", pch=4, col="blue", log="xy")
grid()                                  #Add dotted lines to the pdf to form a background grid 
lines(lowess(cars), col="red")          #Add a smoothed (lowess) line to the plot
dev.off()                               #Close the pdf device
结果
请注意,cars 数据集给出了以英尺为单位的制动距离和以英里/小时为单位的速度,因此此处生成的绘图与图 1.1 和 1.2 中的绘图有所不同,因为那里的数据已经转换为公制单位。


  1. 本书中介绍的 R 知识还不足以完全解释本章中使用的绘图命令。不过,对于那些感兴趣的人来说,对于任何绘图,生成它的命令都列在图像摘要中(可以通过单击图像查看)。
  2. 不幸的是,大量可用参数的详细信息(其中许多参数在其他生成图形的例程中很常见)分散在许多帮助文件中。例如,要查看在数据集上调用 plot() 时可用的选项,请参阅 ?plot?plot.default?par。要查看在函数上调用 plot() 时可用的选项,请参阅 ?plot.function。在 points() 的帮助文件中列出了指定各种绘图符号的 pch 参数给出的数字(用于向绘图添加点的函数):可以通过 example(points) 查看它们。
华夏公益教科书