R语言的基础绘图系统主要由基础包graphics提供,它包含了各式的图形绘制函数,如折线图、直方图、箱形图等。本篇主要介绍plot()函数的用法,它主要用于绘制散点图和折线图。

plot()函数的语法结构如下:

plot(x, y = NULL, type = "p",xlim = NULL, ylim = NULL,log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL,ann = par("ann"), axes = TRUE, frame.plot = axes,panel.first = NULL, panel.last = NULL, asp = NA,xgap.axis = NA, ygap.axis = NA,...)

x和y分别是绘图点的横纵坐标,y可以省略

  • x相当于自变量,y相当于因变量;

  • y没缺省时,必须和x同长度,类型是可以向量化的数据结构,如向量、矩阵的行或列、数组的元素、数据框的列、列表的元素等;

  • y缺省时,x为单列时,y默认为c(1:n),其中n为x的长度;

  • y缺省时,x为两列的矩阵或数据框,则该矩阵或数据框的第一、二列分别对应自变量和因变量。

par(mfrow = c(2,2))
set.seed(123)
x <- c(1:5)
y <- runif(5, 0, 10)# x和y是同长度的向量
plot(x, y, type = "b", main = "x和y是同长度的向量")
# y缺省
plot(x, type = "b", main = "y缺省")x2 <- cbind(x, y)
x2df <- as.data.frame(x2)# x为两列的矩阵
plot(x2, type = "b", main = "x为两列的矩阵")
# x为两列的数据框
plot(x2df, type = "b", main = "x为两列的数据框")

  • y缺省时,x为三列及以上的矩阵时,则该矩阵的第一、二列分别对应自变量和因变量,其他列忽略;

  • y缺省时,x为三列及以上的数据框时,则绘制各列两两之间的关系。

set.seed(123)
x <- c(1:5)
y3 <- matrix(runif(15, 0, 10), ncol = 3)
x4 <- cbind(x, y3)
x4df <- as.data.frame(x4)# x为四列的矩阵时,只绘制前两列之间的关系
plot(x4, type = "b", main = "x为四列的矩阵")
# x为四列的数据框,绘制各列两两之间的关系
plot(x4df, main = "x为四列的数据框")

参数type控制图形类型

参数type共有9种可选项,默认值为p,表示散点图(points);当为n时不输出任何图形,这样可以为后续操作形成空白的绘图区域。具体可参见以下例子:

par(mfrow = c(3,3))
set.seed(123)
x <- c(1:5)
y <- runif(5, 0, 10)
x2 <- cbind(x, y)plot(x2, type = "n", main = "不显示")
plot(x2, type = "p", main = "散点图")
plot(x2, type = "l", main = "折线图")
plot(x2, type = "b", main = "散点+间断折线")
plot(x2, type = "c", main = "间断折线")
plot(x2, type = "o", main = "散点+连续折线")
plot(x2, type = "h", main = "垂直于x轴")
plot(x2, type = "s", main = "楼梯形状")
plot(x2, type = "S", main = "反楼梯形状")

main控制绘图标题,sub控制绘图次标题

set.seed(123)
x <- c(1:5)
y <- runif(5, 0, 10)
x2 <- cbind(x, y)plot(x2, type = "b", main = "这是标题", sub = "这是次标题")

坐标轴和边框参数

plot()的一些参数可用于对坐标轴的样式进行修改:

  • xlimylim分别用于控制图形横、纵坐标的范围,默认为NULL,超过xlim或ylim的取值不会被绘制出来;

  • xlabylab分别控制横、纵坐标轴的标签;

  • log控制坐标轴的刻度是否为等对数间距,log = "x"表示横坐标轴刻度对数化,log = "y"表示纵坐标轴对数化,log = "xy"或log = "yx"表示横、纵坐标轴均对数化;

  • asp控制纵坐标和横坐标单位刻度的长度之比,比如当asp = 2时表示1单位y轴的刻度是1单位x轴刻度长度的两倍;

  • xgap.axisygap.axis分别控制横、纵坐标刻度值的间隙,必须为正数,数值越大,间隙越宽。

set.seed(123)
x <- c(1:5)
y <- runif(5, 0, 10)
x2 <- cbind(x, y)par(mfrow = c(2,2))
# 控制显示范围
plot(x2, type = "b", xlim = c(1,4), ylim = c(1,9), main = "控制显示范围")
# 设置坐标轴标签
plot(x2, type = "b", xlab = "这是横坐标", ylab = "这是纵坐标", main = "设置坐标标签")
# 坐标轴对数化
plot(x2, type = "b", log = "x", main = "坐标轴对数化")
# 设置纵坐标与横坐标单位刻度长度之比
plot(x2, type = "b", asp = 0.4, main = "asp = 0.4")par(mfrow = c(1,2))
# 横坐标轴间隙为1
plot(x2, type = "b", xgap.axis = 1, main = "xgap.axis = 1")
# 横坐标轴间隙为4
plot(x2, type = "b", xgap.axis = 4, main = "xgap.axis = 4")

  • axes控制是否显示坐标轴和边框,默认为TRUE表示显示,当为FALSE,不显示坐标轴和边框;

  • frame.plot参数用于控制是否绘制边框,此参数不影响坐标轴的显示。

par(mfrow = c(2,2))
set.seed(123)
x <- c(1:5)
y <- runif(5, 0, 10)
x2 <- cbind(x, y)# 不显示坐标轴和边框
plot(x2, type = "b", axes = F, main = "不显示坐标轴和边框")
# 不显示边框,坐标轴仍显示
plot(x2, type = "b", frame.plot = F, main = "只显示坐标轴")
# 不显示坐标轴,边框仍显示
plot(x2, type = "b", axes = F, frame.plot = T, main = "只显示边框")

panel.first和panel.last用于设置网格

调用panel.first时,网格会先于图形绘制,故网格在图形之下;
调用panel.last时,网格会后于图形绘制,故网格在图形之上。

par(mfrow = c(1,2))
set.seed(123)
x <- c(1:5)
y <- runif(5, 0, 10)
x2 <- cbind(x, y)plot(x2, type = "l", panel.first = grid(5, 10),pch = 0, lwd = 4, col = "blue",main = "网格在下")plot(x2, type = "l", panel.last = grid(5, 10),pch = 0, lwd = 4, col = "blue",main = "网格在上")

可以看出,由于右图图形在网格之下,因此与网格相交的部分会出现空隙。

ann参数控制标题和坐标轴标签是否显示

ann也是par()函数的参数,默认与par()ann相同,当它为TRUE时,标题和坐标轴标签会正常显示,当为FALSE时,标题和坐标轴标签不会显示。

par(mfrow = c(1,2))
set.seed(123)
x <- c(1:5)
y <- runif(5, 0, 10)
x2 <- cbind(x, y)# 正常显示标题和坐标轴标签
plot(x2, type = "b", main = "我是标题", xlab = "这是横坐标", ylab = "这是纵坐标", ann = T)
# 隐藏标题和坐标轴标签
plot(x2, type = "b", main = "我是标题", xlab = "这是横坐标", ylab = "这是纵坐标", ann = F)

从右图可以看出,当ann = F时即使设置了标题和坐标轴标签,也不会显示。

...中的参数均不是plot()独有的

这些参数即可以在plot()中设置,也可以在一些依赖于plot()函数才能生效的其他函数中进行设置,最后都作用于plot()绘制的图形,因此放到其他函数中进行介绍。

graphics | 基础绘图系统(一)——主函数plot及其参数相关推荐

  1. graphics | 基础绘图系统(五)——plot函数功能再探和低级绘图函数

    plot函数虽然主要用于绘制散点图和折线图,但它实际上是一个比较全能的函数.本篇就介绍如何使用plot函数绘制其他类型的图形.另外,上篇介绍的高级绘图函数如boxplot.barplot等都有参数ad ...

  2. graphics | 基础绘图系统(七)——各式各样的散点图/折线图

    前面已经用了六篇推文系统地介绍了R语言的基础绘图系统的主要函数用法,以及柱状图.直方图.箱形图.扇形图等常见图形的绘制方法,接下来将计划用四篇推文介绍使用基础绘图系统能够绘制的其他各类图形. 本篇介绍 ...

  3. graphics | 基础绘图系统(四)——柱状图、直方图、扇形图、箱形图和函数图象...

    前面介绍的主函数plot()主要用于绘制散点图和折线图,绘制其他常见的图形如柱状图.直方图.扇形图和箱形图等可以调用专门的函数. 1 柱状图 绘制基础柱状图的函数是barplot(),其语法结构如下: ...

  4. graphics | 基础绘图系统的拼图方法之三:使用mfrow、mfcol参数和layout函数

    R的基础绘图功能是个自成体系的系统,尽管有许多工具包可以"一行代码绘制一幅图",但是小编仍然认为系统地学习基础功能非常重要. 本篇推文是为了补全关于基础绘图系统的拼图功能的介绍,前 ...

  5. graphics | 基础绘图系统(三)——添加文本标注、坐标轴线和图例

    前面介绍了使用使用高级绘图函数plot()绘制基本图形和使用参数函数par()美化要素.设置布局等.但有时为了表达更丰富的内容,我们还需要添加文本标注以及必要的图例,这些可以使用text().mtex ...

  6. graphics | 基础绘图系统(八)——棘状图、符号图、多边形(路径)图、Cohen-Friendly关联图、条件密度图...

    本篇继续介绍基础绘图系统中的几个绘图函数. spineplot() 该函数用于绘制棘状图,有以下两种语法结构: spineplot(x, y = NULL,breaks = NULL, tol.yla ...

  7. graphics | 基础绘图系统(十)——星形图、四瓣图、马赛克图

    插播消息:最初建的交流群已经无法使用了,新建群的加入方式见次条推送. 本篇是"基础绘图系统"系列推文的最后一篇,我们来介绍三种不常见的图形,对应的绘图函数分别如下: stars() ...

  8. graphics | 基础绘图系统(九)——栅格图、点密度图、等高线(填充)图、三维图...

    先插播一则消息:刚建的交流群莫名其妙地被判违规,不仅无法加新人,而且群内的消息可能只能自己看到.先看看过几天能不能解封,不行再另想办法. 本篇是"基础绘图系统"系列的第九篇推文,也 ...

  9. 技巧 | 如何使用R语言的基础绘图系统的拼图功能

    我们知道ggplot2工具包有很多方便的拼图拓展包,如cowplot.patchwork等,而本篇就来介绍在使用R语言的基础绘图系统如何进行拼图.需要明确的是,基础绘图系统的拼图功能不需要借助任何其他 ...

最新文章

  1. 查理芒格+终身学习+你的认知就是你的财富的边界
  2. ASP .NET Core MVC Entity Framework 旧书交易网站
  3. 目前154万AI开发者
  4. 【STM32】MDK5打开MDK4项目工程时出现的不兼容及解决方法
  5. CG CTF WEB 综合题
  6. 启动项目后,FileItemFactory 错误
  7. 使用BeetleX.NetBenchmark压测TCP,HTTP和Websocket服务
  8. 前端又一本升级版图书上市了,听说比第一版还好看
  9. 1083. List Grades (25)
  10. leetcode165. 比较版本号 超级重要的细节
  11. 小组会谈(2019.3.14)
  12. NET平台4.0 发布网站流程及出错总结
  13. Oracle 9i初始化参数文件
  14. yoast造成php内存过大_解决PHP处理图片时内存占用过高问题
  15. 【转】RIS/PACS系统实施过程中Worklist的配置与调试
  16. 入职与离职手续、五险一金、档案
  17. 2022年全球备用锂电池管理系统行业分析报告
  18. 开源音频处理软件/项目
  19. 负载均衡下的多台tomcat服务器,通过memcache实现session共享
  20. 2022华为机试社招OD高频考试真题【9, 10月份Q2, Q3考试新编程题目】

热门文章

  1. 多个 vCenter Server 实例部署的升级或迁移顺序以及混合版本转换行为
  2. Docker学习总结(56)——Docker-compose 基础知识温习
  3. SSO单点登录学习总结(2)——基于Cookie+fliter单点登录实例
  4. 以太坊geth区块链私链建立
  5. 并发编程之ReentrantLock
  6. 《工业控制网络安全技术与实践》一2.2 分布式控制系统
  7. MAC 系统下允许NTFS磁盘读写
  8. Kettle 之 javascript字段数据处理
  9. System Center 2012 R2实例3—SCOM之SharePoint全方位监视11—服务监视
  10. Python爬虫之:下载软件包