统计分析:R/R/图形入门
外观
正如本书贯穿始终所论证的,分析中一个极其重要的部分是对数据的可视化。幸运的是,R 拥有广泛的数据可视化功能:事实上,本书中的所有图形都是使用 R 制作的,通常只需几行代码[1]。
输入在 R 中生成绘图主要有两种方法
- 传统的 R 图形。我们将在此主题中介绍这个基本的图形框架。我们将使用它来生成与图 1.1 和 1.2 中类似的绘图。
- “Trellis” 图形。这是一个更复杂的框架,可用于在一个页面上生成多个类似的绘图。在 R 中,此功能由 “lattice” 包提供(键入
help("Lattice", package=lattice)
获取详细信息)。
如何生成特定类型绘图的详细信息将在后面的章节中介绍;本主题仅介绍最基本的原理,其中主要有 3 个要点需要牢记
- 在 R 中生成绘图是通过键入特定的图形命令来实现的。这些命令有两种类型
- 设置完全新绘图的命令。此类型最常见的函数被称为
plot()
。在最简单的情况下,这可能会用新绘图替换任何先前的绘图。 - 向现有绘图添加图形(线、文本、点等)的命令。许多函数可以做到这一点:最有用的函数是
lines()
、abline()
、points()
和text()
。
- 设置完全新绘图的命令。此类型最常见的函数被称为
- R 始终将图形输出到一个 设备。通常这是一个屏幕上的窗口,但它也可以是一个 pdf 或其他图形文件(完整列表可以通过
?device
找到)。这是将绘图保存到文档等中的方法之一。要在 (比如) pdf 文件中保存图形,您需要使用pdf()
激活一个新的 pdf 设备,运行您的常规图形命令,然后使用dev.off()
关闭设备。这在下面的最后一个示例中得到了说明。 - 不同的函数会根据
plot()
的第一个参数触发。默认情况下,这些函数旨在生成合理的输出。例如,如果它给出一个函数,比如sqrt
函数,plot()
将生成x
与sqrt(x)
的图形;如果它给出一个数据集,它将尝试以合理的方式绘制数据点(有关更多详细信息,请参阅?plot.function
和?plot.data.frame
)。诸如颜色、样式、项目大小以及轴标签、标题等图形细节,大多数可以通过plot()
函数的其他参数来控制[2]。
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 中的绘图有所不同,因为那里的数据已经转换为公制单位。
- ↑ 本书中介绍的 R 知识还不足以完全解释本章中使用的绘图命令。不过,对于那些感兴趣的人来说,对于任何绘图,生成它的命令都列在图像摘要中(可以通过单击图像查看)。
- ↑ 不幸的是,大量可用参数的详细信息(其中许多参数在其他生成图形的例程中很常见)分散在许多帮助文件中。例如,要查看在数据集上调用
plot()
时可用的选项,请参阅?plot
、?plot.default
和?par
。要查看在函数上调用plot()
时可用的选项,请参阅?plot.function
。在points()
的帮助文件中列出了指定各种绘图符号的pch
参数给出的数字(用于向绘图添加点的函数):可以通过example(points)
查看它们。