不得不说的小心情哇

哇唔,开启分享的第二天,虽然都是代码的搬运工,但是,分享也是一种乐趣。再一次感谢大鹏。

快捷键

箭头赋值党的福利啊,表白==>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)

r语言 批量替换 r语言批量替换快捷键_ide


cex,(character expansion)点的尺寸

lty=,(line type )线的形状

pch=’ ',(point character)点的类型,可以自定义字母,或者是下面的数字

r语言 批量替换 r语言批量替换快捷键_ide_02


(图片来源于《学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)

r语言 批量替换 r语言批量替换快捷键_坐标轴_03


按照横轴是浓度的月变化,纵轴式浓度的年变化,颜色越偏紫,浓度越大,浓度越偏红,浓度越小。

#练习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')

r语言 批量替换 r语言批量替换快捷键_数据_04

添加直线、网格、图例

  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)

r语言 批量替换 r语言批量替换快捷键_数据_05

分别向图中添加了三次直线, 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)

r语言 批量替换 r语言批量替换快捷键_r语言 批量替换_06


**注释:**可以替换的位置名称为: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')

r语言 批量替换 r语言批量替换快捷键_ide_07

多图合一:三种布局

多图合一可以达到对比的效果,使多条曲线共享一个x-y坐标系。

第一种
  1. Step1:plot()函数画出第一组y1曲线
  2. 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')

r语言 批量替换 r语言批量替换快捷键_数据_08

第二种
  • 副坐标轴
    上图中年份变化不明显,现在采取同横坐标,不同纵坐标,也就是创建副坐标轴
#创建副坐标轴(一次表达不明的错误尝试)
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')

r语言 批量替换 r语言批量替换快捷键_坐标轴_09

#进入正餐
#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')

r语言 批量替换 r语言批量替换快捷键_ide_10


注释:

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')

r语言 批量替换 r语言批量替换快捷键_r语言 批量替换_11

保存图片

代码法

#代码法保存图片
#打开一张宽为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()

r语言 批量替换 r语言批量替换快捷键_ide_12

#准备数据
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]))

r语言 批量替换 r语言批量替换快捷键_数据_13

r语言 批量替换 r语言批量替换快捷键_坐标轴_14


注释:

  1. 函数
  • seq(from=,to=,by=.length.out=n)length.out表示等差的个数
  • t()转置,转置前,从mydata2中,将等差数列形成的数字,转为因子型,找到对应年份12个月的浓度,相当于subset()函数,subset(数据,条件,选择哪些变量进行展示) (但是我没试出来)
  1. 转换逻辑
  • 因为要将年份作为X轴,所以需要将年份作为列来展示,在将矩阵(二维)降为向量(一维),默认一列一列进行展示.故用到t().
  • 将数据拆散,维度必须都相等,比如,此案例中数据量是12x8, 因此对于年份或者月份重复时,务必保持数据量相等,在对年份或者月份进行重复,rep()函数参数设置中选择是times=,还是each=,要根据浓度展开的含义.

名称

作用

F1

展示函数的帮助信息

F2

演示函数源代码

tab

提示和自动补全

example()

函数示例,圆括号里填函数名

demo()

演示,圆括号为空时查看所有可用演示

vignette()

技术文档,vignette(all = TRUE)展示所有可用文档