飞道的博客

R语言-画图

426人阅读  评论(0)

学习视频 https://www.bilibili.com/video/BV157411F7ZV?p=15&spm_id_from=pageDriver

plot函数

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") -- type="b" 代表有点和线 

plot(dose,druga,type = "c") -- 只有线没有点


  
  1. dose <- c( 20, 30, 40, 45, 60)
  2. druga <- c( 16, 20, 27, 40, 60)
  3. drugb <- c( 15, 18, 25, 31, 40)
  4. plot(dose,druga)
  5. plot(dose,druga,type = "b") ## type= "b" 代表有点和线
  6. opar <- par(no.readonly = TRUE) ##代表图形是可以修改的图像
  7. par(lty= 2, pch= 17) ##lty= 2代表虚线,pch= 17代表转点为三角形 这个par是一个类似于设定画图环境变量的工具,你设定好 长度类型,颜色,后面用其他画图函数 一般都会有默认的这些参数,你用par设定了就会用par的设定
  8. plot(dose,druga,type = "b") ##再次打印
  9. par(opar) ## 还不知道啥意思。。。
  10. plot(dose,druga,lty= 2,pch= 19,col='green',main = "这是主标题",type='b',cex= 1. 5,lwd= 2,col.axis='red',fg='grey',bg='black')

par函数是可以指定画图形式的。也可以在plot函数里指定画图格式

备注 colors()可以显示颜色类型。颜色也可以rgb(1,2,3) 用0FFFF123这种

> names(pdfFonts())
 [1] "serif"                "sans"                 "mono"                 "AvantGarde"           "Bookman"             
 [6] "Courier"              "Helvetica"            "Helvetica-Narrow"     "NewCenturySchoolbook" "Palatino"            
[11] "Times"                "URWGothic"            "URWBookman"           "NimbusMon"            "NimbusSan"           
[16] "URWHelvetica"         "NimbusSanCond"        "CenturySch"           "URWPalladio"          "NimbusRom"           
[21] "URWTimes"             "ArialMT"              "Japan1"               "Japan1HeiMin"         "Japan1GothicBBB"     
[26] "Japan1Ryumin"         "Korea1"               "Korea1deb"            "CNS1"                 "GB1" 

 

R-语言做图图形的尺寸和大小


 


  
  1. dose <- c( 20, 30, 40, 45, 60)
  2. druga <- c( 16, 20, 27, 40, 60)
  3. drugb <- c( 15, 18, 25, 31, 40)
  4. plot(dose,druga,lty= 2,pch= 19,col='green',type='b',cex= 1. 5,lwd= 2,col.axis='red',fg='grey',bg='black',main = "这是主标题",sub= "副标题",xlab= "病人年纪",ylab= "药物剂量",xlim=c( 0, 100),ylim=c( 0, 100))

title函数-修改标题


  
  1. plot(dose,druga,lty=2,pch=19,col= 'green', type= 'b',cex=1.5,lwd=2,col.axis= 'red', fg= 'grey', bg= 'black',main = "这是主标题",sub= "副标题",xlab= "病人年纪",ylab= "药物剂量",xlim=c(0,100),ylim=c(0,100))
  2. title(main = "title",col.main= "red") ##给图形加个title 如果图形本身有会重叠
  3. title(sub= "sub title",col.sub= "gold")

axis()绘制坐标轴


  
  1. x=c( 1: 10)
  2. y=x
  3. z= 10/x
  4. rz=round(z,digits = 2)
  5. ypart=c( 1: 5)
  6. yname=c( "一", "二", "三", "四", "五", "六", "七", "八", "九", "十")
  7. ynamepart=yname[ 1: 5]
  8. opar=par(no.readonly = TRUE)
  9. par=(mar=c( 5, 4, 4, 8)+ 0. 1)
  10. #yaxt 禁止在y轴上做出刻度 ann=FALSE代表在xy轴去掉说明(原先是xy)
  11. plot(x,y,type='b',pch= 25,,lty= 4,col= "red",yaxt= "n",ann=FALSE)
  12. # 2代表左边 at代表需要绘制的位置 labels绘制的刻度的字符描述如果为null直接用at las=2 垂直
  13. axis( 2,at=ypart,labels=ynamepart,col.axis= "red",las= 2)

lines函数 在已生成图形基础上 再加一条线


  
  1. #再画一条线
  2. lines(x,z,type= "b",pch= 21,lty= 4,col= "green")
  3. #给右边添加一个刻度显示xz函数关系
  4. axis( 4,at=z,labels=rz,col.axis='green')

 

次要刻度线 minor.tick()

##安装包

install.packages("Hmisc")

##导入包

library(Hmisc)

注意!!!可能会出错,大概意思就是Hmisc的版本太高,R的版本低了,此时需要更新R 。通过version命令查看R版本

install.packages("installr")

library(installr)

updateR() ##注意这一步的时候会提示你要在R上直接运行,不要再RGUi也就是Rstudio里。我是R里运行。。。。

更新完后再导入Hmisc


  
  1. plot( 1: 4, 1: 4,type='b')
  2. #次刻度线 nx=2把x上主要刻度线分成2份 tick.ratio次要刻度线相比主要刻度线长度的比值
  3. minor.tick(nx= 3,ny= 2,tick.ratio = 0. 5)

参考线 abline()


  
  1. plot( 1: 4, 1: 4,type='b')
  2. #次刻度线 nx=2把x上主要刻度线分成2份 tick.ratio次要刻度线相比主要刻度线长度的比值
  3. minor.tick(nx= 3,ny= 2,tick.ratio = 0. 5)
  4. #ab参考线和line一样在原图上新增, h代表水平的一条线 v代表垂直的一条线
  5. abline(h= 2,v= 2,col= "red",lty= 2)

图例 legend


  
  1. dose <- c( 20, 30, 40, 45, 60)
  2. druga <- c( 16, 20, 27, 40, 60)
  3. drugb <- c( 15, 18, 25, 31, 40)
  4. opar=par(no.readonly = TRUE)
  5. par(lwd= 2,cex= 1. 5,font.lab= 2,lty= 3,pin=c( 3, 2),mai=c( 1. 2, 1. 2, 1,. 5))
  6. plot(dose,druga,type= "b",xlab = "计量",ylab = "药物反应",xlim =c( 10, 70),ylim=c( 10, 60),main = "计量与药物A,B关系图",col= "red",pch= 15)
  7. lines(dose,drugb,type= "b",lty= 3,pch= 21,col= "grey")
  8. #次刻度线 nx=2把x上主要刻度线分成2份 tick.ratio次要刻度线相比主要刻度线长度的比值
  9. minor.tick(nx= 4,ny= 2,tick.ratio = 0. 5)
  10. #ab参考线和line一样在原图上新增, h代表水平的一条线 v代表垂直的一条线
  11. abline(h= 27,v= 40,col= "blue",lty= 2)
  12. #批注
  13. ##center,bottom,top bottomleft ,inset图例的边框距离边界的距离值,legend
  14. legend( "bottomleft",title = "a,b",inset = 0. 05,legend =c('A','B'),pch = c( 15, 21),lty=c( 3, 3),col = c( "red", "grey") )

对点进行标记text() mtext()


  
  1. #标记
  2. attach(mtcars);
  3. head(mtcars);
  4. plot(wt,mpg,main = "车重和耗油关系",xlab = "车重",ylab = "耗油",lty= 3,pch= 18)
  5. #wt是横坐标 mpg是纵坐标 rownames是点的名称, cex 字体放小点,pos=4在点右边
  6. text(wt,mpg,rownames(mtcars),cex= 0. 5,pos = 4,col= "red")

 

---------------------------------------------

终极汇合作图


  
  1. note <- c( "年幼多金",rep( "少年得志", 2),rep( "青年无忧", 2),rep( "中年潦倒", 2),rep( "老年穷苦", 3))
  2. age <- seq(from= 0,to= 100,by= 10)[ 1: 10]
  3. weight <- c( 1: 10)^ 2
  4. iq <- seq(from = 100,to = 1,by = - 10)[ 1: 10]
  5. money <- round( 1000/age,digits = 2)
  6. ##mai调整图的边界 ,cex调整 所有比例大小,也可以调整部分,暂时不太清楚。。。。
  7. opar <- par(mai=c( 1,. 8, 1,. 8),cex= 0. 7)
  8. ### yaxt 禁止在y轴上做出刻度(不是1234这种可以用自己的计量单位代替) ann=FALSE代表在xy轴去掉说明(原先是age,weight)
  9. plot(age,weight,lty= 4,pch= 20,type= "b",col= "red",xlab = "年纪",ylab = "体重")
  10. #增加iq线
  11. lines(age,iq,lty= 4,pch= 21,type= "b",col= "green")
  12. #增加age-money线
  13. lines(age,money,lty= 4,pch= 22,type = "b",col= "cyan")
  14. #辅助线 h是水平线 v是垂直线
  15. abline(h= 43. 5,v= 56. 2,col= "gold",lty= 2)
  16. #次刻度线 nx=2把x上主要刻度线分成2份 tick.ratio次要刻度线相比主要刻度线长度的比值
  17. minor.tick(nx= 3,ny= 2,tick.ratio = 0. 4)
  18. #批注标明每条线是代表啥
  19. legend( "bottomleft",title = '年纪关系图',title.col='grey',legend = c( "weight",'iq','note','money'),col=c( "red", "green", "gold",'cyan'),pch=c( 20, 21, 0, 22),lty=c( 4, 4, 2),inset= 0. 02)
  20. #给图形右边做标记 las=2代表右边刻度标识垂直 col.axis代表刻度说明颜色 col=xx代表刻度和刻度说明都是这颜色
  21. axis( 4,at = money,labels = money,col.axis= "cyan",las= 2,lwd= 0. 1)
  22. #增加标题
  23. title(main= "年纪关系图",sub= "体重,钱,智商")
  24. #交点注释。。。。
  25. text(age,money,labels =note ,pos = 4,col= "red",cex= 0. 9)

 

 

 

 


转载:https://blog.csdn.net/cclovezbf/article/details/115556315
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场