R入门(二)---快捷键、plot基础画图,多图拼接
不得不说的小心情哇
哇唔,开启分享的第二天,虽然都是代码的搬运工,但是,分享也是一种乐趣。再一次感谢大鹏。
快捷键
箭头赋值党的福利啊,表白==>Alt+_;
没有一个好记性,求助==>Tab帮你自动搜寻字母打头的函数;
实现在脚本面板和Console面板自由切换:Ctrl+1和Ctrl+2;
快捷键大全(估计不会看系列)==>Alt+Shift+K;
无意间点击成了Ctrl+Shift+r自动在你Rstudio,当前脚本面插入了节,惊不惊喜,意不意外,哈哈哈;
新建脚本:Ctrl+Shift+n;
批量替换(大爱):Ctrl+Alt+Shift+m
傻傻分不清楚,对不对,对就对了。手动微笑。。。。。
正经开始今天的记录了
昨天的数据再来一遍
> mydata2 <- as.data.frame(t(matrix(
+ co2,12,
+ dimnames = list(month.abb,unique(floor(time(co2)))))))
> #在数据上多增加一列year,将行名转为数值型
> mydata2$year<-as.numeric(rownames(mydata2))
#plot()画图,若数据为一维,则数据实际值对应纵坐标,序号对应横坐标
plot(mydata2$Sep)
#除F1,进行help外另一个好帮手example()
example(plot)
#二维散点图
plot(x=mydata2$year,mydata2$Sep)
#数据是多少变量名,就是变量与变量之间的散点图
plot(mydata2)
#此时类似于pairs(mydata2)
#像excel那样地查看数据
View(mydata2)
小助理三剑客:F1、sample()、demo()
demo()示范的函数有限,demo()运行后显示的是能示范的函数
常用画图函数
函数 | 用途 |
---|---|
plot() | 主要用作散点图 |
pairs() | 散点图矩阵 |
symbols() | 气泡图 |
hist() | 直方图 |
curve() | 函数曲线图 |
barplot() | 柱状图 |
boxplot() | 箱线图 |
coplot() | 条件散点图 |
dotchart() | 点图(克利夫兰点图) |
stripchart() | 一维散点图 |
image() | 矩阵方格图 |
contour() | 等高线图 |
plot()函数
x,y分别表示横纵轴数据,
xlab=,ylab=,来定义横纵坐标轴标签,
main=,定义标题
type=,定义把数据画成点还是线,(可供选择的有p,l,b,c,o,h,s,S,n)
cex,(character expansion)点的尺寸
lty=,(line type )线的形状
pch=’ ',(point character)点的类型,可以自定义字母,或者是下面的数字
(图片来源于《学R》、《R图形化数据分析》)
总结:
先确定type
type=‘p’—>设置pch参数;type=‘l’—>设置lty参数。
R的颜色
- 关于R的所有颜色 http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf
- 当col=colors[n],对应的是n位置上的颜色,n的范围[1,657]
- 可以用colors()查看R中的657种颜色的名称
- 关于自带配色方案的函数:rainbow(n) 、heat.colors(n)、terrain.colors(n)、topo.colors(n)、cm.colors(n)、gray(n)、hcl(n) (>_< ) n表示的是将对应颜色分为多少n份
**
将数据进行三维展示
#将数据降维
myco2 <- unlist(mydata2[,1:12])
#为了简化操作,对浓度四舍五入
myco2 <- round(myco2)
#用向量myyear存储第二个维度
myyear <- rep(mydata2$year,12)
#用向量mymonth存储第三个维度
mymonth <- rep(1:12,each=nrow(mydata2))
#三个维度的数据准备完毕
#n根据浓度范围,确定的颜色种数
n <- diff(range(myco2))
mycolor <- rainbow(n)[myco2-min(myco2)+1]
#画图
plot(x=mymonth,y=myyear,col=mycolor,cex=10,pch=15)
按照横轴是浓度的月变化,纵轴式浓度的年变化,颜色越偏紫,浓度越大,浓度越偏红,浓度越小。
#练习3.1
mydata2$mean <- apply(mydata2,FUN = mean,MARGIN = 1)
plot(mydata2$year,mydata2$mean,type = 'p',pch=17,col='yellow',xlab = 'year',ylab = 'mean',main = 'homework3.1')
添加直线、网格、图例
- abline()
plot(x=mydata2$year,mydata2$Sep)
abline(h=350)
abline(h=360,v=1980,col='red')
abline(h=seq(from=320,to = 340,by = 5),v=seq(from=1970,to = 1990,by = 5),col='gray')
abline(a=-2240,b=1.3)
分别向图中添加了三次直线, abline()参数中,h(horizontal)表示水平线,v(vertical)垂直线,两个参数可以同时存在。同时存在时,对线的颜色设置成浅灰色,就变成了网格线。
abline,“截距a和斜率b的直线”,也可以画斜线
3. legend()
位置的确定有三种,确定点的(X,Y)坐标、利用特殊位置的英文、定位
legend(x=1970,y=350,legend = 'Sep',pch = 1)
legend('topleft',legend = 'Sep',pch = 1)
legend(locator(1),legend = 'Sep',pch = 1)
**注释:**可以替换的位置名称为:bottomright”, “bottom”, “bottomleft”, “left”, “topleft”, “top”, “topright”, “right”, “center”(9种)
练习3.2作业
plot(x=mydata2$year,y=mydata2$Sep)
abline(h=seq(from=min(mydata2$Sep),to = max(mydata2$Sep),by = 10),v=seq(from=min(mydata2$year),max(mydata2$year),by = 1),col='grey')
多图合一:三种布局
多图合一可以达到对比的效果,使多条曲线共享一个x-y坐标系。
第一种
- Step1:plot()函数画出第一组y1曲线
- Step2:用lines()或points()添加第二组y2曲线
#基础plot()图,在ylab的表达式中,[]表示的是下标(如图)
plot(x = 1:12,y = mydata2['1959',1:12],xlab = 'Month',ylab = expression(co[2]),ylim = c(310,370),type = 'l',lty=2,col='blue')
#points()和lines()函数添加曲线
lines(x = 1:12,y = mydata2['1997',1:12],col='red')
#或者
points(x = 1:12,y = mydata2['1997',1:12],col="red",type = 'l')
第二种
- 副坐标轴
上图中年份变化不明显,现在采取同横坐标,不同纵坐标,也就是创建副坐标轴
#创建副坐标轴(一次表达不明的错误尝试)
plot(x = 1:12,y = mydata2['1959',1:12],xlab = 'Month',ylab ='1959',type = "l",lty=2,col='blue')
par(new=TRUE)
plot(x = 1:12,y = mydata2['1997',1:12],ylab = '1997',type = 'l',lty=1,col='red')
#进入正餐
#1.告诉R在右侧为副坐标轴留出空间
par(mar=c(5,4,4,4))
#2.画第一张图
plot(x = 1:12,y = mydata2['1959',1:12],xlab = 'Month',ylab ='1959',type = "l",lty=2,col='blue')
#3.告诉R,下一张图跟第一张图叠加
par(new=TRUE)
#4.画在第二张图,但暂时不画坐标轴,也不加标签
plot(x = 1:12,y = mydata2['1997',1:12],type = 'l',lty=1,col='red',axes = FALSE,ylab = '',xlab = '')
#5.在右侧画出副坐标轴
axis(side = 4,col = 'red')
#6.为副坐标轴添加名称
mtext(side = 4,text = '1997',line = 3,col = 'red')
注释:
1.第一三条,par(mar=c())表示给下,左,上,右(顺时针)分别留白多少,par(new=TRUE)表示指定下一条作图命令跟上一条作图区域相同.
2.第四条plot()函数,axes=FALSE, 禁止显示默认的坐标轴.
3.第五条axis()仍然是设置坐标轴,此时自定义设置,side取值1,2,3,4.表示的是下,左,上,右(顺时针),该条命令表示在右侧画一条红色的坐标轴.
4.mtext(),添加文字,作为新坐标轴的标签,side的取值和含义同理.line表示文字与图表区的距离.
第三种
- 小图拼贴
par(mfrow=c()),mfrow表示(matrix of figures entered row-wise)将图按照几行几列进行展示
#按照一行两列一次进行画图
par(mfrow=c(1,2))
plot(x = 1:12,y = mydata2['1959',1:12],xlab = 'Month',ylab ='1959',type = "l",lty=2,col='blue')
plot(x = 1:12,y = mydata2['1997',1:12],xlab = "Month",ylab = '1997',type = 'l',lty=1,col='red')
保存图片
代码法
#代码法保存图片
#打开一张宽为8,高为4的白纸
pdf('F:/R lab/学R/r4r/fig2_13.pdf',width = 8,height = 4)
#在白纸上画图
plot(x = mydata2$year,y = mydata2$Jan)
#画完了,把纸张收起来
dev.off()
注释: pdf()函数将图片保存为pdf格式.还可以用png(),jpg()等
项目 | 内容 |
---|---|
作图函数 | plot(), boxplot() |
点形状 | pch=1,pch=‘z’ |
线形状 | lty=2 |
颜色 | col = ‘blue’, rainbow(), colors() |
添加要素 | lines(), points(), abline(), axis(),box(),legend(), text(), mtext(), expression() |
多图布局 | par(), layout() |
保存图片 | pdf(), jpg(), png() |
不得不再一次表白大鹏,简洁明了
#练习3.3
x <- mydata2$year[1:6]
y <- mydata2$Sep[1:6]
#方案1:逐个画图
pdf('F:/R lab/学R/r4r/9in1.pdf')
par(mfrow=c(3,3),cex=1.2,mar=c(3,2,0.5,1))
plot(x = x,y = y,type = 'p')
legend('topleft',legend = 'p',cex = 0.8,bty = 'n',text.col = 'blue')
plot(x = x,y = y,type = 'l')
legend('topleft',legend = 'l',cex = 0.8,bty = 'n',text.col = 'blue')
plot(x = x,y = y,type = 'b')
legend('topleft',legend = 'b',cex = 0.8,bty = 'n',text.col = 'blue')
plot(x = x,y = y,type = 'c')
legend('topleft',legend = 'c',cex = 0.8,bty = 'n',text.col = 'blue')
plot(x = x,y = y,type = 'o')
legend('topleft',legend = 'o',cex = 0.8,bty = 'n',text.col = 'blue')
plot(x = x,y = y,type = 'h')
legend('topleft',legend = 'h',cex = 0.8,bty = 'n',text.col = 'blue')
plot(x = x,y = y,type = 's')
legend('topleft',legend = 's',cex = 0.8,bty = 'n',text.col = 'blue')
plot(x = x,y = y,type = 'S')
legend('topleft',legend = 'S',cex = 0.8,bty = 'n',text.col = 'blue')
plot(x = x,y = y,type = 'n')
legend('topleft',legend = 'n',cex = 0.8,bty = 'n',text.col = 'blue')
dev.off()
#方案2:循环化简操作
pdf('F:/R lab/学R/r4r/9in1.pdf')
par(mfrow=c(3,3),cex=1.2,mar=c(3,2,0.5,1))
for (i in c('p','l','b','c','o','h','s','S','n')) {plot(x = x,y = y,type = i)legend('topleft',legend = i,cex = 0.8,bty = 'n',text.col = 'blue')
}
dev.off()
#准备数据
mydatasub <- t(mydata2[as.character(seq(1960, by = 5, length.out = 8)), 1:12])
x <- rep(1:12, 8)
y <- as.vector(mydatasub)
group <- rep(colnames(mydatasub), each = 12)
library(lattice)
xyplot(y ~ x|group, type = c('p', 'l'), xlab = 'Month', ylab = expression(CO[2]))library(ggplot2)
qplot(x, y, col = group, geom = c("point", "line"), xlab = 'Month', ylab = expression(CO[2]))
注释:
- 函数
- seq(from=,to=,by=.length.out=n)length.out表示等差的个数
- t()转置,转置前,从mydata2中,将等差数列形成的数字,转为因子型,找到对应年份12个月的浓度,相当于subset()函数,subset(数据,条件,选择哪些变量进行展示) (但是我没试出来)
- 转换逻辑
- 因为要将年份作为X轴,所以需要将年份作为列来展示,在将矩阵(二维)降为向量(一维),默认一列一列进行展示.故用到t().
- 将数据拆散,维度必须都相等,比如,此案例中数据量是12x8, 因此对于年份或者月份重复时,务必保持数据量相等,在对年份或者月份进行重复,rep()函数参数设置中选择是times=,还是each=,要根据浓度展开的含义.
名称 | 作用 |
---|---|
F1 | 展示函数的帮助信息 |
F2 | 演示函数源代码 |
tab | 提示和自动补全 |
example() | 函数示例,圆括号里填函数名 |
demo() | 演示,圆括号为空时查看所有可用演示 |
vignette() | 技术文档,vignette(all = TRUE)展示所有可用文档 |
R入门(二)---快捷键、plot基础画图,多图拼接相关推荐
- 转 Python爬虫入门二之爬虫基础了解
静觅 » Python爬虫入门二之爬虫基础了解 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.baidu.com/ ,我们会看到几张的图片以 ...
- OpenCL入门二:OpenCL基础概念
基础概览 原理建议阅读下面文章,文中介绍了OpenCL相关名词概念: https://www.cnblogs.com/yxwkf/p/4552029.html 简介 http://opencl.cod ...
- Python爬虫教程——入门一之爬虫基础了解
1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...
- r语言 断轴 画图_R语言基础画图/绘图/作图
R语言基础画图 R语言免费且开源,其强大和自由的画图功能,深受广大学生和可视化工作人员喜爱,这篇文章对如何使用R语言作基本的图形,如直方图,点图,饼状图以及箱线图进行简单介绍. 0 结构 每种图形构成 ...
- QR code 二维码基础入门教程
QR code 二维码基础入门教程 本文为 QR Code Tutorial: Introduction 的总结,详细内容请查看原文 Introduction History and Informat ...
- Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化
Python入门(二)--IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化 我们从今天就开始正式的学习PY交易了,PY交易还行,我们有基础之后学习起来倒不是说 ...
- r语言各形状编号_R语言基础画图
过去一个月实验比较忙,很久没有写点东西了,今天要给amina画图,因此学习了一下R语言的基础画图.ide 1.plot函数函数 plot(x,y,xlim=c(0,100),ylim=c(0.4,1) ...
- SQL基础使用入门(二): DML语句和DCL语句
SQL语句第二个类别--DML 语句 DML是数据操作语言的缩写,主要用来对数据表中数据记录实例对象进行操作,包括插入.删除.查找以及修改四大操作,这也是开发人员使用中最为频繁的操作. 1.插入记录 ...
- [网络安全自学篇] 二十.Powershell基础入门及常见用法(二)
这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Powershell基础入门知识,涉及基础概念.管道和重定向.执行外部命 ...
最新文章
- 【美团语音交互部】 NLP/知识图谱/语音识别等算法职位开放招聘!
- 编程实现newton插值c++_数据体操:数据处理和IDW地理插值算法
- HTML Table 固定列宽,实现excel表格效果
- nodejs实践录:开篇
- mysql57包解压安装_mysql5.7解压包安装教程
- /bin/bash: bash not found Alpine linux安装bash
- Oracle数据库的静默安装详解
- 《C Primer Plus(第6版)中文版》一2.12 编程练习
- c# timer 销毁_C# System.Timers.Timer定时器的使用和定时自动清理内存应用
- 基于Java和Python实现简单的CA认证系统
- 硅谷课堂第十二课-公众号点播课程和直播管理模块
- 蓝桥杯算法训练超全习题题解——ALGO-3.K好数**
- 通过搜狗蜘蛛池,让网站收录排名提升
- 计算机中系统更新是指,Mac电脑操作系统更新了什么功能
- 锤炼腹肌的好方法:健腹轮的折叠刀式俯卧撑
- linux系统下能玩网页游戏下载软件,最适合玩游戏的Linux 系统
- 哈登独得40分保罗复出 火箭主场103:98复仇魔术
- jsp70786体育馆售票门票系统
- K-means,K-means++方法详解-机器学习分类问题常见算法
- WordPress BuddyPress 存在越权漏洞RCE(CVE-2021-21389)
热门文章
- 每日一题2021.5.13 D. Corrupted Array
- 第8章实验1:学生成绩管理系统V1.0
- ova后缀的文件是干什么用的
- win10打字突然不显示选字框了
- 微信小程序云开发快速入门手册-告别切图仔的时刻到了
- 摩托罗拉v980显示服务器,摩托罗拉v980手机充电器我有一个摩托罗拉 – 手机爱问...
- [Win32] API Hook(2)在64位系统上的实现
- 英语口语255之每日十句口语
- IP地址、子网掩码、网络号、主机号、子网号的计算
- c++并查集(详细总结)