R 语言学习笔记(3)—— 基础绘图
1. R 中图形的概念
在 R 中图,就像 photoshop 中的图层一样,每一个元素都是层层向上延展构建的,最终形成了我们视觉上所形成的平面图形。这些元素包含了常见的图形的标题(title)、坐标轴(axis)、标签(label)、颜色(color)、线条(line)、符号(character)、文本标注(text)等等
2. 画图的基本流程
dev.new
pdf(mygraph.pdf)
attach(variable)
plot()...
detach(variable)
dev.off
3. 图形参数
参数又为parameter,这一选项可以自定义一副图形的多个特征。我们可以通过函数par()
来实现
调用格式为
par(optionname = value, optionname = value, ...)
#或者多次调用
par()
par()
也可以在高级绘图函数中直接提供参数的键值对optionname = value
plot(dose, drugA, type = "b", lty = 2, pch = 17)
但并不是每个绘图函数都允许指定全部可能的图形参数
值得一提的是,par()
函数是指定全局的参数设置,该参数除非被修改否则在会话结束之前一直有效,添加参数no.readonly = TRUE
可以生成一个可以修改的当前图形参数列表。
#先储存初始的参数
opar <- par(no.readonly = TRUE)
par()
#修改后在令其还原
par(opar)
指定符号和线条类型的参数
pch
—— point character 绘制点使用的符号cex
—— 指定符号的大小,是一个数值,表示默认大小的缩放倍数lty
—— linetype 指定线条的类型 线条样式 1 为实线,2 为虚线lwd
—— linewide 指定线条的宽度
颜色
col
—— 默认的绘图颜色,可以接受一个含有颜色值的向量并自动循环使用,如col = c("red", "blue")
也为符号的颜色col.axis
—— 坐标轴刻度文字的颜色col.lab
—— 坐标轴标签(名称)的颜色col.main
—— 标题颜色col.sub
—— 副标题颜色fg
—— 图形的前景色bg
—— 图形的背景色,也为符号的填充色
文本属性
cex
表示相对于默认大小缩放倍数的数值,特指符号的缩放大小cex.axis
坐标轴刻度的缩放倍数cex.lab
cex.main
cex.sub
font
整数 用于指定绘图使用的字体样式,1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体font.axis
font.lab
font.main
font.sub
family
使用的字体族,先用names(pdfFonts())
找到可用字体,然后在在pdf()
中添加参数pdf("mypdf.pdf", family = "fontname")
来生成图形
图形尺寸与边界尺寸
pin
以英寸表示的图形尺寸(宽和高)mai
以数值向量表示的边界大小,顺序为“下,左,上,右”,也是英寸mar
以数值向量表示的边界大小,顺序为“下,左,上,右”,单位为英分,默认值为c(5,4,4,2)+0.1
添加文本、自定义坐标轴和图例
如上图,若想添加标题,需在plot()
函数中加入参数 main
;
若想添加副标题需加入参数sub()
;
若想添加坐标轴标签需加入参数xlab
或者ylab
;
指定坐标轴刻度的始末范围,可以添加参数xlim; ylim
1. 标题
title(main = "标题", col.main = "标题的颜色",
sub = "副标题", col.sub = "副标题的颜色",
xlab = "x 轴的标签", ylab = "y 轴的标签",
col.lab = "标签的颜色", cex.lab = "标签的尺寸")
2. 坐标轴
可以使用函数来自定义坐标轴,而不是默认的坐标轴, 在绘制自己创建的坐标轴之前,需要先使用plot()
函数,并且在里面添加参数xaxt = n
或者yaxt = n
绘图时,纵轴不显示刻度线和刻度标签,但是保留了框线,而 ann = FALSE
表示暂时禁止坐标轴的生成,便于之后用 axis 自定义刻度线
axis(side,
at = "表示刻度线需要绘制的位置 , 就是相当于你在尺子的实际位置画一条线,如果 at=c(1:10), 即是在 1单位距离,2 单位距离等等画出刻度线"
labels = "刻度线旁边的文字标签, 而 label 相当于在 at 每个刻度对应的位置上打上标签,他们的数量应该是一致的"
pos = "与另一条坐标轴相交的位置",
lty = "线条类型" ,
col = "线条颜色",
las= "标签是否平行(=0)或垂直于(=2)坐标轴",
tck = "刻度线长度,以相对于绘图区域大小的分数表示,负值为外,正值为内,0 表示禁用,1 表示绘制网格线,默认为-0.01",
...)
3. 参考线
abline(h = "水平线的位置", v = "垂直线的位置")
4. 图例
legend(location, title, legend, ...)
location 可以直接由 locator(1)
来确定图中 x,y 坐标,来确定图例放置的位置
title图例标题的字符串
5. 文本标注
向图形本身添加文本的方式:text()
可向绘图区域内部添加文本,而mtext()
向图形的四个边界之一添加文本
text(location, "输入的文本", pos,...)
mtext("输入的文本", side, line=n, ...)
如果想要把散点图某个点对应的值标注在其上方 可以如下
text(x, y, row.names(dataframe))
6. 数学标注
plotmath()
4. 图像的组合
使用函数par()
或者layout()
可以将多幅图形组合在一起成为一幅总括图形
在par()
中添加图形参数mfrow = c(nrows, ncols)
来创建按行填充的、行数为 nrows、列数为 ncols 的图形矩阵。mfcol = c()
可以按列填充矩阵。
或者是使用函数layout(matrix(c(1,1,2,3)))
,里面是一个矩阵,它指定了所要组合的多个图形的所在位置,创建了一个 2x2 的矩阵,其中第一幅图片放在 11,12 位置,而第二和第三幅图分别放在 21,22 位置
还有两个参数
widths = 各列宽度值组成的一个向量
heights = 各行高度值组成的一个向量
5. 图形布局的精细控制
使用图形参数fig = c()
来完成
c(x1,x2,y1,y2) 表示所绘制图形的区域
而整个图形的区域面积是 1,左下角的坐标是(0,0),右上角的坐标是(1,1)
R 语言学习笔记(3)—— 基础绘图的更多相关文章
- R语言学习笔记:基础知识
1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) ...
- R语言学习笔记(五)绘图(1)
R是一个惊艳的图形构建平台,这也是R语言的强大之处.本文将分享R语言简单的绘图命令. 本文所使用的数据或者来自R语言自带的数据(mtcars)或者自行创建. 首先,让我们来看一个简单例子: ...
- R语言学习笔记2——绘图
R语言提供了非常强大的图形绘制功能.下面来看一个例子: > dose <- c(20, 30, 40, 45, 60)> drugA <- c(16, 20, 27, 40, ...
- R语言学习笔记——C#中如何使用R语言setwd()函数
在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//")> setwd("e:\桌面\")> s ...
- R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理
博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 前言: 应用背景兼吐槽 继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯. ...
- R语言学习笔记(二)
今天主要学习了两个统计学的基本概念:峰度和偏度,并且用R语言来描述. > vars<-c("mpg","hp","wt") &g ...
- R语言学习笔记:字符串处理
想在R语言中生成一个图形文件的文件名,前缀是fitbit,后面跟上月份,再加上".jpg",先不百度,试了试其它语言的类似语法,没一个可行的: C#中:"fitbit&q ...
- R语言学习笔记:日期处理
1.取出当前日期 Sys.Date() [1] "2014-10-29" date() #注意:这种方法返回的是字符串类型 [1] "Wed Oct 29 20:36: ...
- R语言学习笔记:小试R环境
买了三本R语言的书,同时使用来学习R语言,粗略翻下来感觉第一本最好: <R语言编程艺术>The Art of R Programming <R语言初学者使用>A Beginne ...
- R语言学习笔记︱Echarts与R的可视化包——地区地图
笔者寄语:感谢CDA DSC训练营周末上完课,常老师.曾柯老师加了小课,讲了echart与R结合的函数包recharts的一些基本用法.通过对比谢益辉老师GitHub的说明文档,曾柯老师极大地简化了一 ...
随机推荐
- TICK技术栈(二)Telegraf安装及使用
1.什么是Telegraf? Telegraf是一个用Go语言开发的代理程序,可用于收集和报告指标.Telegraf插件直接从其运行的系统中获取各种指标,从第三方API中提取指标,甚至通过StatsD ...
- MYSQL-LINUX 安装步骤
https://www.cnblogs.com/dengshihuang/p/8029092.html 5.7版本安装步骤 1.官网下载mysql二进制文件,匹配自己的linux版本: wget ...
- 运用wxs制作微信小程序左滑功能和跳转,性能更优越
锲子 微信小程序自定义左滑功能加上跳转,换成以往,左滑功能的逻辑一般是在js中实现,但在拖动方面,性能并不是那么的流畅.如今,官方新扩展了一套脚本语言wxs,在IOS设备上运行,性能会比JS快2~20 ...
- [loj2546][JSOI2018]潜入行动(树形DP)
题目描述 外星人又双叒叕要攻打地球了,外星母舰已经向地球航行!这一次,JYY 已经联系好了黄金舰队,打算联合所有 JSOIer 抵御外星人的进攻. 在黄金舰队就位之前,JYY 打算事先了解外星人的进攻 ...
- 学习笔记27_Action方法技巧
*在Action方法中,会存在重载问题,名字冲突就会报错,使用 [HttpPost]//只接受Post请求,且级别较高 public ActionResult Edit(..){} *在Action方 ...
- [考试反思]1026csp-s模拟测试88:发展
不用你们说,我自己来:我颓闪存我没脸. 昨天的想法, 今天的回答. 生存, 发展. 总分榜应该稍有回升,但是和上面的差距肯定还是很大. 继续. 为昨天的谬误,承担代价. T2和T3都值得张记性. T2 ...
- CSPS模拟 85
WWB大佬的bitset映射真是太强了! %%% T1 观察样例,猜规律. T2 对题目的翻译工作用了很长时间 翻译错了好几次.. 观察到奇环没法染色,选的边必须把奇环弄断 如果在偶环上,偶环就变得没 ...
- NOIP模拟 15
因为OJ停机,正好写(tui)个总结(boke) 题解不想写了. 前两题题意没看懂,其实比较简单. 最后一题神仙,想放弃. (迪神貌似又在疯狂骂自己) (我这么辣鸡我...) (下面开始跑题) 这两天 ...
- 常见Java数据结构&优缺点
数组 优点:查询快,如果知道索引可以快速地存取 缺点:删除慢,大小固定 有序数组 优点:比无序数组查找快 缺点:删除和插入慢,大小固定 栈 优点:提供后进先出的存取 ...
- node.js评论列表和添加购物车数据库表创建
2.1:评论列表--发表评论 用户点击新闻列表某一条新闻,看到新闻详细发表评论 -用户输入评论内容 -发表评论 [将用户评论内容保存数据库 xz_comment] 2.2:评论列表--发表评论-开发评 ...