R语言入门--第二节(图形入门)

R语言的作图功能有多强大就不多做介绍了,可以自行百度;这里简单介绍下R作图的一些知识

先简单做个图吧

rm(list=ls())
dose  <- c(20, 30, 40, 45, 60)
drugA <- c(16, 20, 27, 40, 60)
drugB <- c(15, 18, 25, 31, 40)
#逐步添加图形要素
#plot(dose, drugA)   #点图
plot(dose, drugA, type="b")    #点连线
lines(dose, drugB, type="b")  #再添加一条
title("relations between dose and drug")
示例.png

要点1、修改图形参数

  • 方法一
opar <- par(no.readonly=TRUE) # 保存原始默认参数
par(lty=2, pch=17)            # 改变两个参数:lty为线条类型,pch为点符号类型
plot(dose, drugA, type="b")   # 改变的基础上生成新图
#该参数修改直至运行下述代码或者重启R时恢复默认设置
par(opar)                     # 恢复初始设置
  • 方法二
plot(dose, drugA, type="b", lty=3, lwd=3, pch=15, cex=2)  
#直接修改,但并不是所有参数都支持

要点2、图形参数

(1)符号与线条

  • pch 点符号(0~25)p48
  • cex 点大小,数值表示倍数大小
  • lty 线条类型(1~6)
  • lwd 线条宽度,数值表示倍数大小
plot(dose, drugA, type="b", lty=3, lwd=3, pch=15, cex=2)
修改线条与点符号.png

pch 0-25对应的点符号.png

lty 1-6对应线条类型.png

(2)颜色

  • col 默认的绘图颜色(就是图形颜色,比如上面的符号与线条)
  • col.axis 坐标轴刻度文字的颜色(一般就是那些数字)
  • col.lab 坐标轴标题的颜色
  • col.main 标题颜色
  • col.sub 副标题颜色
  • fg 图形前景色(轴和框的颜色)
  • bg 图形背景色(刚试了下,没反应?)
#可以直接用基本颜色英文表示,也支持十六进制,RGB等等
col="red"
colors()    #可返回所有可用颜色的名称,下面的网站可以查看具体所对应的颜色
# http://www.docin.com/p-1491680339.html
rainbow(3)    #可以返回指定数目的“彩虹型”颜色
#[1] "#FF0000FF" "#00FF00FF" "#0000FFFF"
#R包RColorBrewer可以创建出吸引人的颜色配对
library(RColorBrewer)
mycolors <- brewer.pal(5, "Set1")  #从Set1中抽取5中颜色
barplot(rep(1,10), col=mycolors)  #循环重复
RColorBrewer包.png

(3)文本属性

文本大小

  • cex.axis 为数值,表倍数
  • cex.lab
  • cex.main
  • cex.sub

字体样式

  • font.axis 1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体
  • font.lab
  • font.main
  • font.sub

(4)尺寸

  • pin 以英寸表示的图形尺寸,宽和高
  • mai 表图的四周的宽大小,顺序为下,左,上,右;单位为英寸
  • mar 同上,单位为英分。1英分=1/12英寸=0.21厘米

要点3、添加元素

高级绘图函数可以自己添加

plot(dose, drugA, type="b",  
     col="red", lty=2, pch=2, lwd=2,
     main="Clinical Trials for Drug A", 
     sub="This is hypothetical data", 
     xlab="Dosage", ylab="Drug Response",
     xlim=c(0, 60), ylim=c(0, 70))    #设置x,y轴的范围
plot.png

(1)添加标题

#title()函数
title(main="主标题",sub="副标题",xlab="x轴标题",ylab="y轴标题")
#同时可以参考上述参数进行细节修改

(2)添加次要刻度线

library(Hmisc)
minor.tick(nx=2,ny=3,tick.ratio=0.5)
#意为在x轴的的每两条主刻度线间添加一条次要刻度线(分成2段)
# y添加两条,分成3段。大小为主刻度的0.5倍。

添加自定义坐标轴见P55

(3)添加参考线

abline(h=c(1,5,7))     #添加水平参考线
abline(v=c(2,5),lty=2,col="blue")  #添加蓝色的垂直虚线

(4)添加示例图形

legend("topleft",inset=.05,
            title = "Drug Type",  
            c("A","B"), lty = c(2,6),pch = c(19,23),col=c("red","blue"))
#前两个参数说明位置;其中inset = 指定图例想图形内侧移动的大小
#也可以用坐标表示,执行locator(1)命令,配合鼠标点击,返回位置信息
图形示例.png

(5)添加文本标注

#这里以给点图添加文本标注为例
attach(mtcars)
plot(wt,mpg)
text(wt,mpg,rownames(mtcars),pos=4,cex=0.6)
#前两个参数提供位置参数,即点的位置信息;
#第三个为向量的形式提供文本内容,注意长度要相同;
#pos指明文本相对位置1234-下左上右
detach(mtcars)

小彩蛋1--演示数学标记方法

demo(plotmath)
help(plotmath)
demo示例.png

小彩蛋2--多幅图显示在一起/拼图

#mfrow=c() 函数,默认 mfrow=c(1,1)
opar <- par(no.readonly=TRUE)
par(mfrow=c(2,3)) #按行填充,行数为2,列数为3的图形矩阵
par(mfcol=c(2,3)) #按列填充
#layout() 函数,可以设置“品”字形的图形矩阵
layout(matrix(c(1,1,2,3),2,2,byrow=TRUE),widths=c(3,1),heights=c(1,2))  
par(opar)
#第一幅图被置于第一行,另两幅图被放在第二行。
#第一行图形高度是第二行的1/2,右下图宽度是左下宽度的1/3

小彩蛋3--设置坐标轴边上副图

opar <- par(no.readonly=TRUE)
par(fig=c(0,0.8,0,0.8))
plot(mtcars$wt,mtcars$mpg,
    xlab="Miles Per Gallon",
    ylab="Car Weight")
par(fig=c(0,0.8,0.55,1),new=TRUE)
# new=TRUE 很关键的参数,表示在原有图上加图
hist(mtcars$wt,main = "",xlab = "",labels = TRUE,ylim=c(0, 10)) 
par(fig=c(0.65,1,0,0.8),new=TRUE)
boxplot(mtcars$mpg,axes=FALSE)
mtext("Enhanced Scatterplot",side=3,outer = TRUE,line=-3)
par(opar)
dev.off()
  • 如上代码,关键设置为例如fig=c(0,0.8,0,0.7)表示该图的位置,表示图形占据横向范围00.8,纵向范围00.7。具体设置值通过不断调试而得。
    组合图

    如上图有一点遗憾,就是不知道怎么把频率图的x轴刻度标签删去。

大部分代码参考《R语言实战(第二版)》;部分图片来自网上,侵删~

你可能感兴趣的:(R语言入门--第二节(图形入门))