Steem 和 R 语言:跟大鹏学 R 语言(14)作图
本文选自《学 R:零基础学习 R 语言》(研究出版社,大鹏、李怡著,2018)第二章,有改动。
前情回顾:
- 预告:“Steem 和 R 语言:跟大鹏学 R 语言”连载即将开始
- Steem 和 R 语言:跟大鹏学 R 语言(1)下载安装
- Steem 和 R 语言:跟大鹏学 R 语言(2)简单计算
- Steem 和 R 语言:跟大鹏学 R 语言(3)变量和向量
- Steem 和 R 语言:跟大鹏学 R 语言(4)作图和统计
- Steem 和 R 语言:跟大鹏学 R 语言(5)表白
- Steem 和 R 语言:跟大鹏学 R 语言(6)读取文件
- Steem 和 R 语言:跟大鹏学 R 语言(7)读取文件(续)
- Steem 和 R 语言:跟大鹏学 R 语言(8)懒人起手式
- Steem 和 R 语言:跟大鹏学 R 语言(9)选取单元格
- Steem 和 R 语言:跟大鹏学 R 语言(10)行和列
- Steem 和 R 语言:跟大鹏学 R 语言(11)整行和整列
- Steem 和 R 语言:跟大鹏学 R 语言(12)保存文件
- Steem 和 R 语言:跟大鹏学 R 语言(13)免安装的R
在上两章中,我们都用到了plot()
函数来作图。如果说Excel的作图方法是《秘密花园》那种书,让你在已经画好的图案里涂涂改改,很受约束的话,那么R作图的流程更加自由:就像铺开一张白纸,自己打好格,画数据点,画坐标轴,加图例,最后把纸收起来。作图的每一步,都清清楚楚掌控在你手里。
这里,我们用第2章读取的二氧化碳数据 mydata2,画一些更漂亮的图片。为了保持本章的独立性和跟上一章节的连续性,我们预先把数据读入到mydata2中(当然,也可以用 read.csv()
函数把co2数据读取进来):
mydata2 <- as.data.frame(t(matrix(
co2, 12,
dimnames = list(month.abb, unique(floor(time(co2)))))))
mydata2$year <- as.numeric(rownames(mydata2))
3.1 控制图像:线型,点状,颜色
我们先做一张最简单的图,只画各年9月份二氧化碳的浓度(图 3.1)。
plot(mydata2$Sep)
图 3.1: plot()函数第一种用法示例:一维数据散点图.
这是plot()
函数的第一种用法,也是最简单用法:绘制一维数据散点图。如果plot()
的作图对象只是一个数值型的向量,那么画出的图纵向是这个向量,横向是数据的序号。
plot()
函数还有别的什么用法呢?可以请F1小助理打开帮助文件。不过,今天我们请出我们的新助理:example()
函数:
example(plot)
运行这条代码,并在RStudio的左下面板里按照提示按回车键,就会看到很多示例。以后,想不起来某个函数的作用的时候,除了F1之外,小助理example()
函数也是个很好的选择。
下面我们指定以年份为横坐标x,9月份的二氧化碳浓度为纵坐标y,做xy散点图(图3.2):
plot(x = mydata2$year, y = mydata2$Sep)
图 3.2: plot()函数第二种用法示例:二维数据散点图.
这是plot()
函数的第二种用法:绘制二维数据散点图。比较一下,跟第一种用法有什么区别?
plot()
函数的第三种用法,其实在前面已经出现过了,我们重复一次:
plot(mydata2)
在这种用法里,plot()
的作图对象是个多行多列的数据框(mydata2),画出的是任意两列分别作为x和y的散点图。这时,plot()
函数等同于pairs()
函数:
pairs(mydata2)
喜欢刨根问底的初学者可能对plot()
函数的多种用法感到困惑。我们打个比方就容易理解了,这就好比佛教里的观音菩萨有32种化身,应众生的需要而以不同面孔示人。需要救人参果树的时候,菩萨就持杨柳枝;需要收鲤鱼精的时候,菩萨就编个鱼篮;适当的时候,菩萨还会伸出千手,或者送上个娃。plot()
函数也是如此,根据你的需要来发挥不同的作用。除了这三种化身外,还有第四第五以及更多化身,我们在以后的课程中遇到再说。
当然,菩萨不止观音一位,R的作图函数除了plot()
外还有很多,见小贴士3.1。他们的用法大同小异,可以咨询example()
小助理。不过,我们这次有请example()
助理的小姐妹——示范函数demo()
来帮忙:
demo(graphics)
就像example()
小助理一样,按照提示按回车键,就会看到各种作图函数的示范了。
小贴士 3.1 常用作图函数(请使用example()函数来查看,如example(plot),或运行demo(graphics))
函数 | 用途 |
---|---|
plot() | 主要用作散点图 |
pairs() | 散点图矩阵 |
symbols() | 气泡图 |
hist() | 直方图 |
curve() | 函数曲线图 |
barplot() | 柱状图 |
boxplot() | 箱式图 |
coplot() | 条件散点图 |
dotchart() | 点图(克利夫兰点图) |
stripchart() | 一维散点图 |
image() | 矩阵方格图 |
contour() | 等高线图 |
一看到大鹏就想起了Diors男士了……好好搞笑的片子。
祝新书大卖,睡后收入收得你手软。
有你的吉言,我觉得应该能回本儿……