知乎问答 | 如何在同一坐标系下绘制多幅图形
在知乎上看到这么一个问题:rstudio将两个图放在同一坐标轴用什么函数?在这里回答一下。
小编推测提问者是想问“使用R语言绘图时怎么把不同的图形绘制在同一个坐标系中”。那么这个问题的本质上其实是进行图形叠加。在ggplot2
工具包及其拓展包中,这个问题很好解决,因为几何图形函数通过符号"+"就能依次在同一坐标系下绘制相应的图形。本篇就来介绍基础绘图系统解决这一问题的思路。
之前,小编已经介绍了如何使用基础绘图系统的fig
参数进行拼图。从下图可以看出,这三个子图明显不在同一坐标系,而是被“拼”在一起的。
想在同一坐标下进行组图,主要有两个思路:调用函数的add
参数和使用低级绘图函数。下面小编依次进行介绍。
add
参数
在graphics
工具包中,一般情况下,每使用一个绘图主函数,就会重新建立一个新的绘图页面;而当add
参数被设置为TRUE时,则会使用已有的绘图页面和坐标系。
示例一
plot(mtcars$mpg, mtcars$qsec,pch = 21, bg = "skyblue",xlim = c(5, 35), ylim = c(12, 24), # 设置坐标范围xlab = "mpg", ylab = "qsec")
boxplot(mtcars$mpg, horizontal = T, at = 13,width = 2, notch = T, col = "coral",add = T) # 设置add参数
boxplot(mtcars$qsec, at = 7.5,width = 2, notch = T, col = "darkgreen",add = T) # 设置add参数
需要注意以下几点:
第一个绘图主函数不需要设置
add
参数,但要设定合适的坐标范围,以涵盖后续图形的坐标范围;从第二个绘图主函数开始,均需设置
add
参数;设置
add = TRUE
的函数,其布局参数会自动失效,也就是说只有第一个绘图主函数能够对绘图布局要素如坐标范围、标签等进行调整。
需要注意的是,大部分绘图主函数都有add
参数,但并非所有,具体可查看相应函数的帮助文档。
低级函数
当主函数没有add
参数时,可以考虑使用低级函数。这里以plot
函数为例。
plot
函数根据x
和y
参数的类型(数值向量/因子向量/矩阵)可绘制不同的图形。其中当x
和y
参数均为数值向量时,绘制散点图和折线图,此时plot
函数没有add
参数。
因此,若想在已有坐标系中叠加散点图或折线图,不能使用plot(x, y, add = T)
这种方式,而应使用对应的低级函数points
或lines
。低级函数只能在主函数之后使用,并继续使用主函数生成的绘图页面和坐标系。
示例二
plot(mtcars$mpg, mtcars$qsec,pch = 21, bg = "skyblue",xlim = c(5, 35), ylim = c(12, 24),xlab = "mpg", ylab = "qsec")
boxplot(mtcars$mpg, horizontal = T, at = 13,width = 2, notch = T, col = "coral",add = T)
boxplot(mtcars$qsec, at = 7.5,width = 2, notch = T, col = "darkgreen",add = T)
# 线性模型拟合
model <- lm(qsec ~ mpg, data = mtcars)
lines(mtcars$mpg, fitted(model),col = "red") # 添加拟合直线
双坐标轴
当两个图形的因变量的取值范围相差较大时,可以使用双坐标轴。严格来讲,双坐标轴不算是在同一坐标系下。
设置双坐标轴的思路如下:
第一个绘图函数正常使用,第二个绘图函数前加上
par(new = T)
;两个绘图函数的
xlim
参数设置保持一致;在第二个绘图函数中,通过设置
ann = F
和axes = F
隐藏自动生成的坐标轴及其刻度;使用辅助函数
axis
在右侧生成次坐标轴及其刻度;使用辅助函数
mtext
在右侧添加次坐标轴名称标签;为了防止右侧页边距过小导致标签越出边界,可在绘图前修改par
函数的plt
参数。
示例三
par(plt = c(0.12, 0.88, 0.25, 0.90))
plot(mtcars$mpg, mtcars$qsec,pch = 21, bg = "skyblue",xlim = c(5, 35), ylim = c(12, 24),xlab = "mpg", ylab = "qsec")
par(new = T)
plot(mtcars$mpg, mtcars$wt,pch = 21, bg = "coral", xlim = c(5, 35),ann = F, axes = F)
axis(side = 4)
mtext("wt", side = 4, line = 3)
legend("topright", legend = c("qsec", "wt"),pch = 21, pt.bg = c("skyblue", "coral"))
相关阅读
graphics | 基础绘图系统(三)——添加文本标注、坐标轴线和图例
graphics | 基础绘图系统(四)——柱状图、直方图、扇形图、箱形图和函数图象
graphics | 基础绘图系统(五)——plot函数功能再探和低级绘图函数
技巧 | 如何使用R语言的基础绘图系统的拼图功能
知乎问答 | 如何在同一坐标系下绘制多幅图形相关推荐
- 已知同一组点在不同坐标系下的坐标,如何求解两个坐标系之间的转换关系
问题描述: 已知同一组点在不同坐标系下的坐标(例如有点ABCDEF六个点在坐标系1下的坐标A1,B1,C1,D1,E1,F1同时又已知ABCDEF六个点在坐标系2下的坐标A2,B2,C2,D2,E2, ...
- 已知一个坐标系下某个点的坐标,求另一个坐标系下该点的坐标
问题描述: 已知在odo坐标系下body点的坐标(x_body_in_odo,y_body_in_odo),和obj点的坐标(x_obj_in_odo,y_obj_in_odo), odo坐标系和bo ...
- 若川知乎问答:2年前端经验,做的项目没什么技术含量,怎么办?
知乎问答:做了两年前端开发,平时就是拿 Vue 写写页面和组件,简历的项目经历应该怎么写得好看? 以下是我的回答,阅读量5000+,所以发布到公众号申明原创. 题主说的2年经验做的东西没什么技术含量, ...
- 知乎问答:一年内的前端看不懂前端框架源码怎么办?
知乎问答:一年内的前端看不懂前端框架源码怎么办?以下是我的回答,阅读量 1000+.现在转载到微信公众号中.链接:https://www.zhihu.com/question/350289336/an ...
- 将物体固定在坐标某个点_坐标变换(2)—不同坐标系下的变换
如下图所示,在自动驾驶车辆上会存在大量冗余的传感器,例如轮速传感器.激光雷达,毫米波雷达,摄像头,超声波雷达,GPS,IMU等.不同传感器对同一物体的测量原始结果都是在自身坐标下,所以首先我们需要对多 ...
- python 切片_知乎问答之 Python 切片整理
知乎问答之 Python 切片 这是一个知乎问答的补充.原问题是python中字符串 s[ : -1]是什么意思?,当时回答的内容只是对问题本身的简单回答,对 Python 切片中的重要信息是有所忽略 ...
- 自车坐标系下的物体相对和绝对位置和速度计算
自车坐标系与绝对坐标系的速度位置换算原理 自车坐标系 坐标系--右-前-天坐标(RFU) 坐标系--前-左-上(FLU) 位置换算 速度换算 示意图 情形一 情形二 小结 参考 自车坐标系 自车坐标系 ...
- 无人驾驶路径规划(三)局部路径规划-Frenet坐标系下的动态轨迹规划
前言:对于无人驾驶路径规划系列的第二篇RRT算法的改进部分,由于有些内容属于个人想到的创新点,有想法投一篇小论文所以暂时没有公开,等后续完成后我会再公开介绍.今天第三篇内容开启一个新的算法介绍:Fre ...
- 知乎问答推广怎么做,知乎问答营销技巧
知乎问答推广怎么做?知乎问答营销技巧 首先我们一定要明白知乎账号现在比较少,所以想要通过知乎去做问答推广,前期必须先要养 一下账号.因为如果只是一个新号,一开始就直接去发布信息是很难发布成功的. 至于 ...
最新文章
- 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
- Coursera, Big Data 1, Introduction (week 3)
- ZOJ 1648 线段相交
- [渝粤教育] 西南科技大学 机械制造装备及工艺 在线考试复习资料
- C#基础加强_泛型的基本原理
- Windows Server 2008 将与 Visual Studio 2008 和 SQL Server 2008 于2008年2月27 日在洛杉矶共同发布...
- (转)美国进入智能投顾竞争时代
- 认证杯网络挑战赛C题破局共享汽车
- 人工智能资源下载2024G
- Windows如何后台运行bat文件
- 进一线互联网大厂担任架构师,需要掌握哪些核心技能?
- 避免使用ordinal方法
- Google Guava简介
- Ubuntu18.04 无法解析域名
- 头歌 6. Pandas合并数据集
- GNSS抗干扰和GNSS抗欺骗
- python文本热点问题挖掘_基于文本挖掘的网络热点舆情分析
- NBIOT 设备接入ONENET平台
- 台式计算机BIOS怎么查,怎么查看bios版本|查询电脑主板bios版本的方法
- JAVA 识别图片中二维码 opencv 识别精准
热门文章
- java mysql_num_rows_JAVA MYSQL sql_calc_found_rows和found_rows()实践
- elf 取路径_PatchELF 修改linux下elf文件library搜索路径
- pythonpandas分析数据_python 数据分析--pandas
- 韩国f4计算机考试在哪报名,2020年F4签证资格考试报名方式及考试日程,错过还要再等3个月!...
- 北斗b2频点频率_北斗系统中“三”的奥秘
- 圆章能随便刻吗_当归、人参、虫草熬成的养生汤,能随便销售吗?
- 「小程序JAVA实战」小程序 loading 提示框与页面跳转(37)
- 关于Promise详解
- js中this的理解
- VS2008的C++TR1库已经支持正则表达式