R语言--图形初阶
第一个例子
dev.off()
pdf('my_firstgraph')
attach(mtcars)
plot(wt,mpg) #plot后面第一个参数是横坐标
abline(lm(mpg~wt))
title('Regression of MPG on Weight')
detach(mtacrs)
image-20210417081643587
第二个例子
rm(list=ls())
dose <- c(20, 30, 40, 45, 60)
drugA <- c(16, 20, 27, 40, 60)
drugB <- c(15, 18, 25, 31, 40)
par(mfrow=c(1,2))
plot(dose,drugA)
title("relations between dose and drug")
plot(dose,drugA,type='b')
lines(dose,drugB,type='b')#再添加一条线
title("relations between dose and drug")
图形参数
method
#方法一
rm(list=ls())
dose <- c(20, 30, 40, 45, 60)
drugA <- c(16, 20, 27, 40, 60)
drugB <- c(15, 18, 25, 31, 40)
opar <- par(no.readonly = T)
par(lty=2,pch=17) #lty改变线类型 pch改变符号类型
plot(dose,drugA,type='b')
par(opar)
#方法二
plot(dose,drugA,type='b',lyt=3,pch=20)
符号参数
指定符号和线条类型的参数 P48
参数 | 描述 |
---|---|
pch | 改变符号类型 |
cex | 指定符号的大小 |
lty | 指定线条的类型 1~6 |
lwd | 指定线条的宽度 #默认为1 |
par(mfrow=c(1,3))
plot(dose,drugA,type='b',lyt=3,pch=20,cex=1.5,lwd=4)
plot(dose,drugA,type='b',lyt=3,pch=20,cex=0.5,lwd=2)
plot(dose,drugA,type='b',lyt=3,pch=20,cex=0.85,lwd=2.5)
image-20210417095525432
颜色
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) #循环重复
image-20210417100941239
文本参数
文本大小参数
cex.axis 为数值,表倍数
cex.lab
cex.main
cex.sub
#### 字体参数
font.axis 1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体
font.lab
font.main
font.sub
尺寸
pin 以英寸表示的图形尺寸,宽和高
mai 表图的四周的宽大小,顺序为下,左,上,右;单位为英寸
mar 同上,单位为英分。1英分=1/12英寸=0.21厘米
终合实例
opar <- par(no.readonly = T)
par(pin=c(2,3))
par(lwd=2,cex=1.5)
par(cex.axis=0.75,font.axis=2)
par(mfrow=c(1,2))
plot(dose,drugA,type='b',pch=0,lty=2,col='red',bg='blue',fg='green')
plot(dose,drugA,type='b',pch=23,lty=6,col='red',bg='blue',fg='yellow')
par(opar)
image-20210417103517579
添加文本、自定义坐标轴和图例
par(pin=c(3,3))
plot(dose,drugA,type='b',
col='red',lwd=2,lty=2,pch=2,
main='Clinical Trials for Drug A',col.main='red',
sub = 'This is hypothetical data',col.sub='green',
xlab='Dosage',ylab='Drug Reponse',col.lab='blue',
xlim = c(0,60),ylim=c(0,70))
image-20210417105258546
#添加标题
#title()函数
title(main="主标题",sub="副标题",xlab="x轴标题",ylab="y轴标题")
#同时可以参考上述参数进行细节修改
#添加次要刻度线
library(Hmisc)
minor.tick(nx=2,ny=3,tick.ratio=0.5)
#意为在x轴的的每两条主刻度线间添加一条次要刻度线(分成2段)
#y添加两条,分成3段。大小为主刻度的0.5倍。
添加参考线
abline(h=c(1,5,7)) #添加水平参考线
abline(v=c(2,5),lty=2,col="blue") #添加蓝色的垂直虚线
##添加图例
opar <- par(no.readonly = TRUE)
par(lwd=2,cex=1.5,font.lab=2)
plot(dose,drugA,type='b',
pch=15,lty=1,col='red',ylim=c(0,60),
main='Drug A vs Drug B',
xlab = 'Drug Dosage',ylab='Drug Response'
)
lines(dose,drugB,type='b',
pch=17,lty=2,col='blue')
abline(h=c(30),lwd=1.5,lty=2,col='gray')
legend("topleft",inset=.02,
title = "Drug Type",
c("A","B"),cex=0.7,bty="n", lty = c(2,6),pch = c(19,23),col=c("red","blue"),text.width=0.5
) #去掉边框bty="n" #调整图例大小cex=0.7
par(opar)
image
image-20210417114339723
文本标注
通过函数text()和mtext()将文本添加到图形上
text()向绘图区域内部添加文本
mtext()向图形的四个边界之一添加文本
函数text()和mtext()的选项
选项 | 描述 |
---|---|
location | 文本的位置参数 |
pos | 文本相对于未知参数的方位 |
side | 指定用来放置文本的边 1=下,2=左,3=上,4=右 |
attach(mtcars)
colnames(mtcars)
plot(wt,mpg,
main='Mileage vs. Car Weight',
xlab = 'Weight',ylab = 'Mileage',
pch=16,col='blue')
text(wt,mpg,
row.names(mtcars),
cex = 0.6,pos=4,col ='red')
detach(mtcars)
image-20210417203702726
多幅图显示在一起/拼图
#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
图形布局的精细调整
opar <- par(no.readonly=TRUE)
par(fig=c(0,0.8,0,0.8))
plot(mtcars$wt,mtcars$mpg,col='blue',
xlab="Miles Per Gallon",
ylab="Car Weight",col.lab='red')
par(fig=c(0,0.8,0.55,1),new=TRUE)
# new=TRUE 很关键的参数,表示在原有图上加图
hist(mtcars$wt,main = "",xlab = "",col='green',col.lab='yellow',labels = T,ylim=c(0, 10))
par(fig=c(0.55,1,0,0.8),new=TRUE)
boxplot(mtcars$mpg,axes=F,col = 'orange')
mtext("Enhanced Scatterplot",side=3,outer = TRUE,line=-3,col='red')
par(opar)
dev.off()
image-20210417205748430
网友评论