R语言进阶之坐标轴和文本
许多高层次绘图函数都有可以调整坐标轴和文本的选项:
# 在plot()中指定坐标轴相关的参数
plot(x, y, main="title", sub="subtitle",
xlab="X-axis label", ylab="y-axixlabel",
xlim=c(xmin, xmax), ylim=c(ymin,ymax)
)
接下来,我将和大家简单介绍一下如何具体实现。
1. 标题
使用函数title()可以在图中添加标题,这里包括主标题、副标题、x轴标题和y轴标题,具体如下:
title(main="main title", sub="sub-title",xlab="x-axis label", ylab="y-axis label")
你也可以在title()里指定其它的绘图参数,包括文本大小、字体和颜色等等。
# 添加一个红色标题和蓝色副标题
#坐标轴标签只有默认值大小的75%并且是绿色
title(main="My Title", col.main="red",
sub="My Sub-title", col.sub="blue",
xlab="My X label", ylab="My Y label",
col.lab="green", cex.lab=0.75)
2. 文本注释
我们可以使用函数text()和mtext()来给图形添加注释文本。不过,text()是将文本放在图中,而mtext()则是将文本放在图形的边缘:
text(location, "text to place", pos, ...)
mtext("text to place", side, line=n, ...)
常见选项如下图所示:
选项 |
描述 |
---|---|
location |
位置参数,可以用x轴和y轴的坐标表示 |
pos |
设置文本相对于location的位置。1代表下方, 2代表左侧,3代表上方,4代表右侧。 |
side |
函数mtext()指定图形的边缘。1代表下方, 2代表左侧,3代表上方,4代表右侧。 |
其它诸如坐标轴、字体和颜色等选项这里就不赘述了。
你也可以使用函数 text( )去给图中的点添加标签:
# 示例
attach(mtcars) # 固定数据集
plot(wt, mpg, main="Milage vs. Car Weight",xlab="Weight", ylab="Mileage", pch=18,col="blue") # 绘制车重和每英里耗油量的散点图
text(wt, mpg, row.names(mtcars), cex=0.6, pos=4, col="red") # 标记每个点代表的车型
3. 坐标轴
你可以使用函数axis()来创建自己的坐标轴,使用形式如下:
axis(side, at=, labels=, pos=, lty=, col=, las=, tck=, ...)
选项 |
描述 |
---|---|
side |
指定坐标轴的位置。1代表下方, 2代表左侧,3代表上方,4代表右侧。 |
at |
数值型向量,指定坐标轴记号的位置 |
labels |
字符型向量,指定坐标轴记号的标记内容(默认是该处对应的数值) |
pos |
指定坐标轴线的坐标位置 |
lty |
指定线条类型 |
col |
指定线条和坐标轴记号的颜色 |
las |
0代表标签和坐标轴平行,2代表标签和坐标轴垂直 |
tck |
指定坐标轴记号的长度,负值代表记号在图形外而正值代表在图形内,0代表不绘制记号,默认值是-0.01。 |
如果你想自己创建坐标轴,你需要在高层次绘图函数里设置参数axes=FALSE,这样绘图时就不会出现坐标轴信息,接下来就可以自行添加了。另外,设置 xaxt="n"和yaxt="n"可以分别不显示x轴和y轴。
# 简单示例
# 创建数据
x <- c(1:10); y <- x; z <- 10/x
# 创建图形边缘用于设置坐标轴
par(mar=c(5, 4, 4, 8) + 0.1)
# 绘制x vs y的图
plot(x, y,type="b", pch=21, col="red",
yaxt="n", lty=3, xlab="", ylab="") #不绘制y轴
# 添加线条 x vs. 1/x
lines(x, z, type="b", pch=22, col="blue", lty=2)
# 在图形左侧添加坐标轴(y轴)
axis(2, at=x,labels=x, col.axis="red", las=2)
# 在图形右侧添加坐标轴,文本和记号较小
axis(4, at=z,labels=round(z,digits=2),col.axis="blue", las=2,cex.axis=0.7, tck=-.01)
# 给右侧的坐标轴添加标题
mtext("y=1/x", side=4, line=3, cex.lab=1,las=2,col="blue")
# 添加主标题并且给底部和左侧的坐标轴添加标签
title("An Example of Creative Axes", xlab="X values",ylab="Y=X")
4. 参考线
我们可以使用abline()函数来在图形中添加直线,使用方法如下:
abline(h=yvalues, v=xvalues)
# 在y=1,5,7处添加三条水平线
abline(h=c(1,5,7))
# 在x = 1,3,5,7,9添加三条垂直
abline(v=seq(1,10,2),lty=2,col="blue")
5. 图例
我们可以使用函数legend()来给图形添加图例,用法如下:
legend(location, title, legend, ...)
选项 |
描述 |
---|---|
location |
指定图例所在的位置 |
title |
指定图例的标题 |
legend |
指定图例 |
其它常见的图里选项包括 bty(指定图框类型),bg(指定背景色), cex(指定尺寸)和text.col(指定文本颜色),设定 horiz=TRUE可以是图例处于水平位置。
# 在y=1,5,7处添加三条水平线
abline(h=c(1,5,7))
# 在x = 1,3,5,7,9添加三条垂直
abline(v=seq(1,10,2),lty=2,col="blue")
这一期的内容相对而言比较多,但都是非常实用且重要的,在后续的绘图中我还会常常提及,希望大家能熟练掌握!
- jQuery插件编写步骤详解
- 深入探秘Neutron API
- 碎片化 | 第七阶段-10-session共享解决方案-视频
- CSS选择器是如何确定优先级的?
- JS中控制好this关键字的指向
- 碎片化 | 第四阶段-46-值栈valueStack介绍和原理-视频
- Laravel中运行Gulp任务的利器(一) —— Laravel Elixir简介及入门教程
- 碎片化 | 第四阶段-52-Hibernate特性-视频
- 碎片化 | 第四阶段-53-hibernate持久化session问题解决-视频
- 入门webpack(下)
- 巨头们关注的实时Web:发展与相关技术
- 碎片化 | 第四阶段-54-hibernate-spring整合流程-视频
- OpenDaylight Lithium版本简单应用及流表操作指南
- 碎片化 | 第四阶段-55-OpenSessionInViewFilter组件配置解决session问题-视频
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP hebrev()函数用法讲解
- PHP hex2bin()函数用法讲解
- PHP+jQuery实现即点即改功能示例
- PHP html_entity_decode()函数讲解
- PHP下载大文件失败并限制下载速度的实例代码
- thinkphp5框架实现的自定义扩展类操作示例
- python导入库的具体方法
- PHP+jQuery实现双击修改table表格功能示例
- 基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
- Laravel推荐使用的十个辅助函数
- PHP htmlentities()函数用法讲解
- thinkphp5框架API token身份验证功能示例
- PHP基于mcript扩展实现对称加密功能示例
- php和asp语法上的区别总结
- 解决python pandas读取excel中多个不同sheet表格存在的问题