第17天 R语言绘图入门 R 的绘图功能一直为业内所津津乐道。R语言具有强大的图形可视化功能,可以逐条输入语句构建图形元素(颜色、点、线、文字、及图例等),逐渐完善图形特征,直到得到想要的效果。常见的R绘图相关包包括R自带的基础绘图系统(base),lattice包,和ggplot2包。在ggplot2流行前,lattice包是非常有用的高级绘图系统,但现在ggplot2可以绘制出极其美观的图像,所以一般的绘图,base+ggplot2就已经够用了,所以,我们的课程就是以这2个系统进行绘图教学。 本文主要利用R语言自带的base包进行绘图,ggplot2在今后讨论。 一、base绘图系统 Base包绘制图形一般包括三部分内容。主函数、辅助函数和参数。 1、主函数 plot() 常见绘制散点图 pairs() 散点图矩阵 hist() 直方图 boxplot 箱式图 dotchart() 点图 barplot() 条形图 pie() 饼图 corrgram() 相关图 qqplot(), qqline(), qqnorm()QQ图 heatmap() 热图等 2. 主函数参数 font=字体 lty=线类型 lwd=线宽度 pch=点的类型 xlab=横坐标 ylab=纵坐标 xlim=横坐标范围 ylim=纵坐标范围 main=图内标题 2、 辅助函数 辅助函数在主函数基础上添加元素,一般在主函数内部进行设置,主要包括 par() 同时绘制子图数 legend() 图例 Lines() 线条 Curve() 曲线 Abline() 直线 Points() 点 Arrows() 箭头 Title() 标题 Text() 文字 Mtext() 图框周围文字 grid() 栅格线 axis() 坐标轴 上述函数,可设置不同的参数,进行图形的细节的处理 二、基本绘图系统举例 绘图系统主函数、辅助函数、参数,三者联合起来同时运作。 导入之前数据集 t1<-read.csv("elder1.csv") t2<-read.csv("elder2.csv") str(t2) str(t1) 1. 我们绘制婚姻状况的直条图 counts <- table(t2$marriage) # 首先的汇总数据 > counts 1 2 3 4 5 10 3600 48 342 6 #调用辅助函数par(),同个时间绘制一行2列的图 par(mfrow=c(1,2)) #调用主函数barplot(),绘制竖直条形图 barplot(counts, main = "Simple Bar Plot", xlab = "marriage", ylab = "number") #调用主函数barplot(),绘制水平直条形图 barplot(counts, main = "Horizontal Bar Plot", xlab = "number", ylab = "marriage", horiz = TRUE) #水平条形图 #我们可以看出,barplot()函数中,除了对象counts外,包括了很多参数,具体大家可以通过help()语句进行学习 2. 计算血压的直方图 #调用辅助函数par(),同个时间绘制2行2列的图 par(mfrow = c(2, 2)) #简单直方图主函数hist() hist(t1$SBP) #简单直方图 #直方图主函数hist(),指定组数和颜色 hist(t1$SBP, breaks = 12, col = "red", xlab = "SBP", main = "SBP Distribution") #指定组数和颜色 #直方图主函数hist(),指定组数和颜色,添加密度曲线 hist(t1$SBP, freq = FALSE, breaks = 12, col = "red", xlab = "SBP", main = "SBP Distribution with density curve") #辅助函数,添加密度曲线 lines(density(t1$SBP), col = "blue", lwd = 2) #直方图主函数hist(),指定组数和颜色,添加正态密度曲线 x <-t1$SBP hist(x, breaks = 12, freq=FALSE, col = "red", xlab = "SBP", main = "SBP Distribution with density curve") #辅助函数,添加密度曲线 lines(density(rnorm(1e+6,mean(t1$SBP),sd(t1$SBP))),lty=2,col="red") 更多例子,诸位可以查看R语言学习文档关于绘图的介绍和案例。但是,我想R语言最大的绘图优势是它有ggplot2,接下来我们将逐步介绍它的功能。 最后,一个月就能学会R语言,你敢挑战一下吗? |
|