读书笔记_第三章

#图形初阶
getwd()
par(mfrow=c(1,1)) #快速回答一图部署局面

#线性回归画图
attach(mtcars)
plot(wt,mpg)  #画散点图
abline(lm(mpg~wt)) #在原图上添加回归线
title("Regression of MPG on Weight") #在修改后的图上,增加图标题
detach(mtcars)

#代码保存图片
pdf("mygraph.pdf") #第一步,打开图片存储的目标文件
#第二步,画图
attach(mtcars)
plot(wt,mpg)  #画散点图
abline(lm(mpg~wt)) #在原图上添加回归线
title("Regression of MPG on Weight") #在修改后的图上,增加图标题
detach(mtcars) 
#第三步,关闭图片存储的目标文件
dev.off()

#对于windows,手动在图形窗口中选择“文件”-》“另存为”,在弹出对话框中选择想要的格式和保存位置即可

#图是覆盖,解决方法一,dev.new()
dev.new() #弹出新的画布窗口


#画原始图
dose <- c(20,30,40,45,60)
drugA <- c(16,20,27,40,60)
drugB <- c(15,18,25,31,40)

plot(dose,drugA,type='b') #散点图,dose对应x轴数据,drugA对应y轴数据

#方法一:利用全局图形参数来定制图形
opar <- par(no.readonly = TRUE)  #筛选可修改的全局变量,导出备份,方便还原
par(lty=2,pch=17) #lty修改连线,pch修改点符号
plot(dose,drugA,type='b') #线属性,点属性,均已经发生变化,新图出现
par(opar) #还原原始全局变量定义

#方法二,plot()函数,参数直接控制
# 控制参数解释
# 指定符号
#  pch 每个数字对应不同的符号,15~20实心图标
#  cex默认为1,指定符号大小,1.5表示放大为默认值的1.5倍
# 指定线条
#  lty 指定线条类型,1实线,2虚线,3点线,4点短线段,5线段,6点长线段
#  lwd 指定线条宽度
#  ann=FALSE,可用于移除默认的标题和标签
plot(dose,drugA,type='b',lty=3,lwd=3,pch=15,cex=2)

# 美观参数解释
# col ,设定颜色,线数大于颜色数(红,绿)时,循环往后,3条(红,绿,红)
# col.axis 设定坐标轴刻度文字的颜色
# col.lab  坐标轴标签(名称)的颜色
# col.main 标题颜色
# col.sub  副标题颜色
# fg       图形的前景色
# bg       图形的背景色

colors() #反馈所有可用颜色的名称


#白色等价各种表示方法
col=1
col="white"
col="#FFFFFF"
col=rgb(1,1,1) #基于红,绿,蓝三色值生成颜色
col=hsv(0,0,1) #基于色相,饱和度,亮度值来生成颜色

#RColorBrewer软件包
install.packages("RColorBrewer")
library("RColorBrewer")
n <- 7
mycolors <- brewer.pal(n,"Set1") #创建一个颜色向量
barplot(rep(1,n),col=mycolors) #根据颜色向量,画7个条形图


#画彩虹图
n<-10
mycolors <- rainbow(n) #连续的颜色向量函数,创建10种连续的彩虹型颜色
pie(rep(1,n),labels = mycolors,col=mycolors) #10色彩虹饼图,文本标签以颜色名标识


#画灰度图
n<-10
mygrays <- gray(0:n/n) #创建10阶灰度色
pie(rep(1,n),labels = mygrays,col=mygrays) #10色灰度图,文本标签以颜色名标识

#文本缩放属性
#  cex 默认为1,标识相对于默认大小缩放倍数的数值
#  cex.axis 坐标轴刻度文字的缩放倍数
#  cex.lab  坐标轴标签名称的缩放倍数
#  cex.main 标题的缩放倍数
#  cex.sub  副标题的缩放倍数

#字体样式属性
#  font         1常规,2粗体,3斜体,4粗斜体,5符号字体,
#  font.axis    坐标轴刻度文字的字体样式
#  font.lab     坐标轴标签名称的字体样式
#  font.main    标题的字体样式
#  font.sub     副标题的字体样式
#  ps           字体磅值
#  family       绘制文本时使用的字体族

#之后创建的所有图形都将拥有斜体,1.5倍于默认文本大小的坐标轴标签,以及粗斜体,2倍于默认文本大小的标题
par(font.lab=3,cex.lab=1.5,font.main=4,cex.main=2)

#图形尺寸和边界大小设定
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 = TRUE) 
par(pin=c(2,3)) #设定图形尺寸,2英寸宽,3英寸高
par(lwd=2,cex=1.5) #设定线条宽,缩放大小
par(cex.axis=.75,font.axis=3) #设定坐标轴刻度文字的大小,以及样式

plot(dose,drugA,type='b',pch=19,lty=2,col="red") #散点图,dose对应x轴数据,drugA对应y轴数据
plot(dose,drugA,type='b',pch=23,lty=6,col="blue",bg="green") #散点图,dose对应x轴数据,drugA对应y轴数据

par(opar)

#添加文本,自定义坐标轴和图例

#方法一:plot函数
#参数解释
#   main 主标题(上方)
#   sub  副标题(下方)
#   xlab x轴文字标签
#   ylab y轴文字标签
#   xlim x轴刻度范围
#   ylim y轴刻度范围
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)
)

#方法二:title函数,在现有图形基础继续增改
#一般来说用户将信息添加到一个ann=FALSE选项禁用了默认标题和标签的图表中
title(main="main title",sub="subtitle",xlab="x-axis label",ylab="y-axis label")

title(main="My Title",col.main="red",
      sub="My Subtitle",col.sub="blue",
      xlab="My X label",ylab="My y label",
      col.lab="green",cex.lab=0.75
      )


#axis定制坐标轴
#参数解释
#side      1=下,2=左,3=上,4=右 
#at        数值型向量,表示需要绘制刻度线的位置
#labels    字符型向量,表示刻度线旁边的文字标签,如果为null,则将直接使用at中的值
#pos       坐标轴线绘制位置的坐标
#lty       线条类型
#col       线条和刻度线颜色
#las       看标签的视线是否0平行于图框当前侧,或者2垂直于坐标轴
#tck       刻度线的长度,负向,表示刻度线向图片外伸展,正向,表示刻度线向图片内伸展


#示范
x <- c(1:10)
y <- x
z <- 10/x

opar <- par(no.readonly = TRUE)
par(mar=c(5,4,4,8)+0.1) #逆时针,下边界5+0.1英寸,左边界4+0.1英寸,上边界4+0.1英寸,右边界8+0.1英寸
plot(x,y,type="b",pch=21,col="red",yaxt="n",lty=3,ann=FALSE) #简版散点图,ann抹掉y轴刻度,x,y轴标签,x轴刻度仍在
lines(x,z,type="b",pch=22,col="blue",lty=2) #在现有图上,追加一条线z=10/x
#左边加坐标轴y,其中观看刻度值垂直于坐标轴
axis(2,at=x,labels = x,col.axis="red",las=2) 
#右边加坐标轴z
axis(4,at=z,labels = round(z,digits = 2),col.axis="blue",las=2,cex.axis=0.7,tck=-.01)
#在图形边界添加文本
mtext("y=10/x",side=4,line=3,cex.lab=1,las=2,col="blue")
#添加主标题,x轴标签,y轴标签
title("An Example of Creative Axes",xlab="X values",ylab="Y=x")
par(opar)

#添加参考线,中位数,绝对值等等,自定义坐标轴后,画出的线与值不匹配
abline(h=c(1,5,7),lwd=1.5,lty=2,col="red") #y的1,3,7值位置增加水平参考线

abline(v=c(8),lwd=1.5,lty=2,col="green") #x轴4,6,8,10位置增加垂直参考线

#范例
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 = 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"
     )#x,y之间的关系,画出散点图中第一条线

 #加线x,新y的关系,画图散点图中第二条线
 lines(dose,drugB,type="b",pch=17,lty=2,col="blue")

 #加水平参考线y=30
 abline(h=c(30),lwd=1.5,lty=2,col="red")
 
 #添加次要刻度线,即大刻度下继续划分小刻度线,精确下
 install.packages("Hmisc")
 
 library("lattice")
 library("survival")
 library("Formula")
 library("ggplot2")
 
 library("Hmisc")
 
 #nx 指定x轴一个大区间将划分成几个小区间
 #ny 指定y轴一个大区间将划分成几个小区间
 #tick.ratio 表示新次要刻度线相对于原始大区间的刻度线的大小比例
 minor.tick(nx=2,ny=3,tick.ratio = 0.5) 
 
 #参数解释
 #location 图例在图形中的位置,
 #         一对x,y坐标
 #         或者locator(1)使用鼠标交互式的确定拜访位置
 #         bottom,bottomleft,bottomright,top,topleft,topright,center,right
 #title    图例标题
 #legend   图例标签组成的字符串向量
 #inset    图例向图形内侧移动的大小,距离以百分比形式计算
 legend("topleft",inset=.05,title="Drug Tyep",legend=c("A","B"),
        lty=c(1,2),pch=c(15,17),col=c("red","blue")
        )#A,1,15,red表示第一行,B,2,17,blue表示第二行

 legend(locator(1),inset=.05,title="Drug Tyep",legend=c("A","B"),
        lty=c(1,2),pch=c(15,17),col=c("red","blue")
 )#此时控制台等待鼠标点击,确定放置地址
 
 par(opar) 
 
 #文本标注
 
 
 #示例一
 attach(mtcars)
 plot(wt,mpg,
      main="Mileage vs. Car Weight",
      xlab="Weight",
      ylab="Mileage",
      pch=18,col="blue"
      )
 #参数解释
 # location  一对x,y坐标
 # pos       文本相对于位置参数的方位,1=下,2=左,3=上,4=右
 # side      指定用来放置文本的边,1=下,2=左,3=上,4=右
 text(wt,mpg,
      row.names(mtcars),
      cex=0.6,pos=4,col="red"
      ) #基于点坐标(wt,mpg),文本标识对应的标识行名,行的唯一记录
 detach(mtcars)
 
 #示例二
 opar <- par(no.readonly = TRUE)
 par(cex=1.5)
 plot(1:7,1:7,type="b") #点线都不画
 
 #family 绘制文本时使用的字体库,serif衬线,sans无衬线,mono等宽
 text(3,3,"Example of default text") #对点(3,3)标注描述
 text(4,4,family="mono","Example of mono-spaced text") #对点(4,4),换一种字体库描述
 text(5,5,family="serif","Example of serif text") #对点(5,5),换一种字体库描述

 #数学标注
 demo(plotmath) #反馈数学表达式的写法
 
 x<-seq(0,4,0.01) #0-4之间,根据0.01的间隔生成一个数据序列,长度为400个
 y <- sqrt(x) #基于x,生成y值
 formula <- expression(y==sqrt(x)) #formula对象直接输出就是文本
 plot(x,y,type="l",main=formula,las=1) #将标题写成公式
 
 #图形组合
 
 #范例一,2*2,mfrow,按行填充,优先填满第一行,mfcol,按列填充,优先填满第一列
 attach(mtcars)
 opar <- par(no.readonly = TRUE)
 par(mfrow = c(2,2)) #2*2,图片布局模式
 plot(wt,mpg,main="Scatterplot of wt vs. mpg")  #图一,散点图
 plot(wt,disp,main="Scatterplot of wt vs.disp") #图二,散点图
 hist(wt,main="Histogram of wt")  #图三,直方图
 boxplot(wt,main="Boxplot of wt") #图四,箱线图
 par(opar)
 detach(mtcars)
 
 #范例二,mfrow,3*1,
 attach(mtcars)
 opar <- par(no.readonly = TRUE)
 par(mfrow=c(3,1))
 hist(wt)
 hist(mpg)
 hist(disp)
 par(opar)
 detach(mtcars)
 
 #范例三,layout参数,
 attach(mtcars)
 layout(matrix(c(1,1,2,3),2,2,byrow=TRUE))# 两行两列的矩阵,第一幅图位于第一行,第二幅图位于第二行左侧,第三幅图位于第二行右侧
 hist(wt)
 hist(mpg)
 hist(disp)
 detach(mtcars)
 
 #范例三,layout参数,按比例控制
 #widths 各行宽度值组成一个向量
 #heights 各行高度值组成一个向量
 #heights=c(1,2) 第一行中图形的高度是第二行中图形高度的1/2
 # widths=c(3,1) 右下角图形的宽度是左下角图形宽度的1/3
 attach(mtcars)
 layout(matrix(c(1,1,2,3),2,2,
               byrow=TRUE),
               widths=c(3,1),heights=c(1,2))# 两行两列的矩阵,第一幅图位于第一行,第二幅图位于第二行左侧,第三幅图位于第二行右侧
 hist(wt)
 hist(mpg)
 hist(disp)
 detach(mtcars)
 
 #范例四,fig参数
 opar <- par(no.readonly = TRUE)
 par(fig=c(0,0.8,0,0.8)) #位置:x轴范围0-0.8,y轴范围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)#新图位置:x轴范围0-0.8,y轴范围0.55-1
 boxplot(mtcars$wt,horizontal = TRUE,axes=FALSE)#第二幅图,在上方画
 par(fig=c(0.65,1,0,0.8),new=TRUE)#新图位置:x轴范围0.65-1,y轴范围0-0.8
 boxplot(mtcars$mpg,axes=FALSE)#第三幅图,在右侧画
 mtext("Enhanced Scatterplot",side=3,outer=TRUE,line=-3)
 par(opar)
 

 
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值