在上两篇中,我们都用到了 plot
命令来作图。如果说 Excel 作图的方法是先按照默认的格式画好之后再让你涂涂改改,那么 R 作图的流程更亲切:铺开一张白纸,打好格,画数据点,画坐标轴,加图例。就像用纸笔画图。不像 Excel 那样自作聪明。每一步都清清楚楚掌控在你手里。
开胃小菜: 在 Rstudio 左下窗口输入代码 demo(persp),然后按回车,再回车,再回车,再回车……
这里,我们接着上一篇读取的数据 pm,来画一些更漂亮的图片。
pm <- read.csv(file = "c:\\R\\data\\dapengde_DummyR_PM25.csv")
plot(x = pm$time, y = pm$h8, xlab = "Time", ylab = "PM2.5", type = "l", ylim = c(0,
200)) # 以小时为 x 轴,8 米处的 PM2.5 浓度为 y 轴作图。设定两个坐标的名称。数据点类型为 l 即线型。设定 y 轴范围。
lines(x = pm$time, y = pm$h100, col = "red") # 添加 100 米处 PM2.5 浓度曲线。
legend(x = 15, y = 180, legend = c("8 m", "100 m"), col = c("black", "red"),
lty = 1) # 添加图例。
练习03.1:请用问号查询 plot、lines、legend 的帮助文件。
添加图例的位置有多种设置方法。上面的例子是用坐标位置确定的。还可以用内置模板来指定:
legend("topleft", legend = c("8 m", "100 m"), col = c("red", "black"), lty = 1) # 图例添加在左上角。
legend(locator(1), legend = c("8 m", "100 m"), col = c("red", "black"), lty = 1) # 用鼠标确定图例的位置。
做出的图片出现在 Rtudio 右下窗,可以点击 _Export_,选择保存的格式和路径就可以了。不过,更经常用的是命令行方式:
pdf(file = "c:\\R\\data\\output.pdf") # 打开一张pdf的白纸。
plot(x = pm$time, y = pm$h8, xlab = "Time", ylab = "PM2.5 at 8 m", type = "l", ylim = c(0, 200)) # 在白纸上画图
dev.off() # 画完了,把纸张收起来
下面,我们让图片复杂一点:
pdf(file = "c:\\R\\data\\output2.pdf", width = 8, height = 5) # 设定纸张大小。
plot(x = pm$time, y = pm$h8, xlab = "Time", ylab = "PM2.5 at 8 m", type = "l", ylim = c(0, 200), axes=FALSE) # 画图,但坐标轴先空着。
axis(2) # 在左边画出 y 轴。
axis(4) # 在右边画出 y 轴。
axis(1, at = 0 : 23, labels = 0 : 23) # 在下面画出x轴,并在指定位置(at)标出刻度(labels)。
points(x = pm$time, y = pm$h100, col = "red", type = "l") # 增加一条线。
points(x = pm$time, y = pm$h325, col = "blue", type = "l") # 再增加一条线。
abline(h = c(10, 15 , 25, 35), col = "grey", lty = 2) # 增加几条水平线(世界卫生组织推荐的健康标准值)。
legend("top", legend = c("8 m", "100 m", "325 m"), col = c("red", "black", "blue"), lty = 1) # 添加图例。
box() # 画出边框。
dev.off()
散点图以外的图,用其他的命令,例如:
boxplot(pm[, c("h8", "h100", "h325")], ylim = c(0, 150))
abline(h = c(10, 15, 25, 35), col = "grey", lty = 2)
练习03.1:请给上面boxplot做的图添加图例,并保存为pdf。
R 的作图功能超级强大,看看这里有很多例子,包含了源代码。
有用的信息:
– | – |
---|---|
作图 | plot(), boxplot() |
图上添加数据点和线 | points(), lines(), abline(), box(), axis() |
添加图例 | legend() |
保存图片 | pdf() |
( 连载中,待续 )